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

JavaScript に相当するものはapply()Vimscriptcall()にあります。

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

これはタイプミスではありません::callという名前の関数call()です。

于 2013-08-15T09:34:23.250 に答える