2012-07-28 21 views
9

Eklentinin işlevine bir sarıcı yazmak istiyorum, ancak varargs (...) kullanır. İşlevimin eklentinin işlevine aldığı aynı argümanları nasıl geçebilirim?Varargs dosyasında varargs işlevini başka bir işleve nasıl geçirebilirim?

Örnek:

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

cevap

17

yerine doğrudan (call PluginInterface(a:000)) işlevini çağırmak, call() kullanın:

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

(Bu tuhaf görünüyor, ama yine de önüne zorunda call() bir işlevdir :call veya let x = veya expr kabul eden bir şeyle.)

Bkz. :help call().

İlgili konular