Vim 8.0 で追加された関数 funcref()
Vim 8.0 で新しく funcref()
という関数が追加されました。
これは function()
と同じように関数参照を取得する関数になりますが、『関数が上書きされても元の関数を呼び出す』という違いがあります。
function! Test() return "Test" endfunction let Function = function("Test") let Funcref = funcref("Test") echo Function() " => "Test" echo Funcref() " => "Test" " 関数を上書きする function! Test() return "new Test" endfunction " function() は上書きした関数を呼び出す echo Function() " => "new Test" " funcref() は元の関数を呼び出す echo Funcref() " => "Test"
上書きされる可能性がある関数の参照を取得したい場合は funcref()
を使用したほうが安全かもしれません。