如何在vimscript中将varargs传递给另一个函数?

时间:2012-07-28 17:42:17

标签: vim variadic-functions

我想为插件的函数编写一个包装器,但它使用了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')

1 个答案:

答案 0 :(得分:18)

不要直接调用函数(call PluginInterface(a:000)),而是使用call()

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

(看起来很奇怪,但call()是一个功能,所以你仍然需要在:calllet x =或接受expr的东西前加上它。)

请参阅:help call()