使用list或splat参数调用函数

时间:2013-08-15 09:24:14

标签: vim

有没有办法用参数列表调用vim函数。我的参数列表来自另一个函数中的可选splat参数,我需要一种方法将这些参数传递给目标函数。

目标函数是,

function! run_hello(cmd, ...)
  echo 'run_hello'
  echo a:cmd
  echo a:000
endfunction

将调用run_hello的函数是

function! hello(...)
  call run_hello('foo', the splats here)
endfunction

它将被调用,具有不同的参数。

call hello('lorem', 'ipsum', 'dolor')

我目前正在使用hello(arglist)并向前传递a:000列表。但我想知道是否可以调用一个带有列表作为参数的函数,然后成为它的常规参数列表。

像JavaScript一样的东西,

foo.apply(this, ['a', 'b', 'c']

感谢。

1 个答案:

答案 0 :(得分:15)

在Vimscript中,等效的JavaScript apply()call()

function! hello(...)
    call call('run_hello', ['foo'] + a:000)
endfunction

这不是拼写错误:您:call名为call()的函数。