私のコードは次のとおりです
:let ClassZ = {'author': "Juchen.Zeng"}
:function ClassZ.Print_author_name()
: echo self.author
:endfunction
:function ClassZ.Change_author_name(arg1)
: let self.author = a:arg1
:endfunction
:call ClassZ.Print_author_name()
Juchen.Zeng
:call ClassZ.Change_author_name('MarioLuisGarcia')
:call ClassZ.Print_author_name()
MarioLuisGarcia
vimの公式文書には次のように記載されています。
:function uk2nl.translate(line) dict
: return join(map(split(a:line), 'get(self, v:val, "???")'))
:endfunction
まず試してみましょう。
:echo uk2nl.translate('three two five one')
drie twee ??? een
最初に目立つ特別な点は、「:function」行の末尾にある「dict」です。これは関数が辞書で使用されていることを示します。これにより、「self」ローカル変数が対応する辞書を参照します。
追加の引数なしで私の例でdict
自己参照がうまく機能しているように見えるのはなぜですか?このdict
引数は必須ですか?
答え1
この場合、dict
関数を直接定義して関数dict
の事前暗黙的な属性に割り当てると、属性を使用する必要がdict
ないため、属性はオプションです。
このタイプの関数を呼び出します。匿名または番号付き関数。
ClassZ
あなたの例では、2つのキーを定義し、Change_author_name
値Print_author_name
は次のとおりです。フォンクレープ。
以下を使用して確認できます。機能():
:function ClassZ.Print_author_name
function 394() dict
1 echo self.author
endfunction
ご覧のとおり、aがnumbered-function - 394
作成され、dict
属性があります。