Vim 8.0 で強化された機能 辞書関数

さて、以前の辞書関数は次のように call() と辞書を経由して呼び出す必要がありました。

let s:dict = { "value" : 0 }
function! s:dict.up()
    let self.value += 1
    return self.value
endfunction

let s:f = s:dict.up
echo call(s:f, [], s:dict)
" => 1
echo call(s:f, [], s:dict)
" => 2
echo call(s:f, [], s:dict)
" => 3

Vim 8.0 ではこの縛りが緩和されて、辞書関数を直接呼び出すことができるようになりました。

let s:dict = { "value" : 0 }
function! s:dict.up()
    let self.value += 1
    return self.value
endfunction

let s:f = s:dict.up
echo s:f()
" => 1
echo s:f()
" => 2
echo s:f()
" => 3

めちゃくちゃ便利…。