2012-07-28 8 views
9

Quiero escribir un contenedor para la función de un complemento, pero utiliza varargs (...). ¿Cómo puedo pasar los mismos argumentos que mi función recibe a la función del complemento?¿Cómo puedo pasar varargs a otra función en vimscript?

Ejemplo:

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

Respuesta

17

En lugar de llamar a la función directamente (call PluginInterface(a:000)), utilice call():

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

(Esto se ve muy extraño, pero call() es una función por lo que aún tiene que prefijar se con :call o let x = o algo que acepte un expr.)

Ver :help call().

Cuestiones relacionadas