2013-08-15 13 views
9

Czy istnieje sposób wywołania funkcji vim z listą argumentów. Moja lista argumentów pochodzi z opcjonalnych argumentów splat w innej funkcji i potrzebuję sposobu przekazania tych argumentów do funkcji docelowej.Wywołanie funkcji z argumentami listy lub splat

Funkcja docelowa jest

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

Funkcja że wezwie run_hello jest

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

To będzie nazwane tak jak z różnymi argumentami.

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

Obecnie używam hello(arglist) i przekazując listę a:000 przodu. Chciałbym jednak wiedzieć, czy możliwe jest wywołanie funkcji z listą jako argumentów, które następnie stają się jej zwykłą listą argumentów.

Coś JavaScript'S,

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

Dzięki.

Odpowiedz

14

Równowartość Javascript w apply() jest call() w Vimscript:

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

To nie jest literówka: Ty :call funkcja o nazwie call().

+0

Schludny! Dziękuję Ci. –

Powiązane problemy