自由建客 写了:FunOp 的接口不能变动,这是规定
那就这样
代码: 全选
call Fun(1, 2, 3)
let args=join(a:000, ', ')
exe "call FunOp(".args.")"
自由建客 写了:FunOp 的接口不能变动,这是规定
代码: 全选
call Fun(1, 2, 3)
let args=join(a:000, ', ')
exe "call FunOp(".args.")"
代码: 全选
:let r = call(Fn, mylist)
lilydjwg 写了:帮助里还有这个代码: 全选
:let r = call(Fn, mylist)
代码: 全选
fun Lib_Load(name, ...)
" 预处理
exe "let snr = s:Lib_LoadOp(resolve(path)," . join(a:000, ",") . ")"
return snr
endfun
fun Lib_LoadAll(name, ...)
let snrs=[]
for path in Lib_ListPath(a:name)
exe "let snr = s:Lib_LoadOp(path," . join(a:000, ",") . ")"
if snr!=""
call add(snrs, snr)
endif
endfor
return snrs
endfun
fun s:Lib_LoadOp(path, ...)
" 一些具体操作
let snr="<SNR>".sid."_"
if exists("*".snr."Load")
exe "call ". snr . "Load(sid, ref," . join(a:000, ",") . ")"
endif
" 又一些操作
return snr
endfun
Vim 里很多时候不得不 exec。实在不行还是用 Python 吧。fanhe 写了:都跟你提过有 a:000 了,还是不知道怎么用啊。
凡是用上了 exec,都没有什么好的可读性
前些天实现的把 s: 作其他脚本的回调函数,才叫一个绕弯。