13

我想为插件的函数编写一个包装器,但它使用可变参数(...)。如何将我的函数接收到的相同参数传递给插件的函数?

例子:

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')
4

1 回答 1

22

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

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

(这看起来很奇怪,但call()它是一个函数,所以你仍然必须在它前面加上:callorlet x =或其他接受 . 的东西expr。)

:help call()

于 2012-07-28T17:42:16.980 回答