Vim の辞書関数が強化されてて驚いた
さて、辞書関数といえば以前は call()
を介さないと呼び出すことは出来ませんでした。
let dict = { "value" : 3 } function! dict.add(a) return self.value + a:a endfunction let F = dict.add " call() を介して辞書を指定する必要があった echo call(F, [2], dict) " => 5 " 任意の辞書を指定することもできる echo call(F, [2], { "value" : -3 }) " => -1
[最新版では]
最新版では call()
を介さずに直接呼び出すことが出来ます。
let dict = { "value" : 3 } function! dict.add(a) return self.value + a:a endfunction let F = dict.add " 直接呼び出すことができる echo F(2) " => 5
これ、地味なんですがかなりすごくて、前々からこういう風に使いたかったんですよねえ。
[おまけ]
最新版では get()
で辞書関数が束縛してる辞書の値が取得できます。
let dict = { "value" : 3 } function! dict.add(a) let self.value += a:a endfunction let F = dict.add call F(1) call F(2) call F(3) echo get(F, "dict") " => {'add': function('2379'), 'value': 9}
やばい。