2012-07-28 4 views
9

プラグインの関数にラッパーを書きたいが、varargs(...)を使う。私の関数が受け取るのと同じ引数をプラグインの関数に渡すにはどうすればよいですか?vimscriptのvarargsを別の関数に渡すにはどうすればよいですか?

例:

function! PluginInterface(...) 
    for i in a:000 
     echo i 
    endfor 
endfunction 

function! MyInterface(...) 
    echo a:1 . ' is great' 
    call PluginInterface(a:000) 
endfunction 

echo '>> Their call' 
call PluginInterface('hello', 'world') 
echo '>> My call' 
call MyInterface('hello', 'world') 

答えて

17

代わりの関数を直接呼び出す(call PluginInterface(a:000))、call()を使用します。

call call("PluginInterface", a:000) 
call call(function("PluginInterface"), a:000) 

(それは奇妙に見えますが、あなたはまだそれを前に付ける必要がありますのでcall()が関数であります:callまたはlet x =、またはexprを受け入れるもの)

:help call()を参照してください。

関連する問題