13

有没有办法用参数列表调用 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']

谢谢。

4

1 回答 1

18

在 Vimscript 中apply()相当于JavaScript :call()

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

这不是错字:你:call的函数名为call().

于 2013-08-15T09:34:23.250 回答