vim script 不定参数问题 [解决]

Vim、Emacs配置和使用
头像
acer4740
帖子: 1405
注册时间: 2010-09-13 19:04
来自: 0xFF00EE

Re: vim script 不定参数问题

#16

帖子 acer4740 » 2011-05-02 15:29

自由建客 写了:FunOp 的接口不能变动,这是规定

那就这样

代码: 全选

call Fun(1, 2, 3)

let args=join(a:000, ', ')

exe "call FunOp(".args.")"
头像
自由建客
帖子: 13468
注册时间: 2008-07-30 23:21
系统: Debian stable AMD64

Re: vim script 不定参数问题

#17

帖子 自由建客 » 2011-05-02 16:27

acer4740, 要的就是这个!可以把自己实现的 Args 删掉了!就这样了! :em11
头像
lilydjwg
论坛版主
帖子: 4258
注册时间: 2009-04-11 23:46
系统: Arch Linux
联系:

Re: vim script 不定参数问题

#18

帖子 lilydjwg » 2011-05-02 17:03

帮助里还有这个

代码: 全选

:let r = call(Fn, mylist)
头像
acer4740
帖子: 1405
注册时间: 2010-09-13 19:04
来自: 0xFF00EE

Re: vim script 不定参数问题

#19

帖子 acer4740 » 2011-05-02 17:05

lilydjwg 写了:帮助里还有这个

代码: 全选

:let r = call(Fn, mylist)

哈哈,这个厉害
头像
自由建客
帖子: 13468
注册时间: 2008-07-30 23:21
系统: Debian stable AMD64

Re: vim script 不定参数问题

#20

帖子 自由建客 » 2011-05-02 18:06

lilydjwg, NB,不过在我这个场合下有些麻烦,还是 join 简单些

代码: 全选

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
头像
fanhe
帖子: 2357
注册时间: 2007-03-24 23:45

Re: vim script 不定参数问题

#21

帖子 fanhe » 2011-05-02 18:34

都跟你提过有 a:000 了,还是不知道怎么用啊。

凡是用上了 exec,都没有什么好的可读性

前些天实现的把 s: 作其他脚本的回调函数,才叫一个绕弯。
头像
lilydjwg
论坛版主
帖子: 4258
注册时间: 2009-04-11 23:46
系统: Arch Linux
联系:

Re: vim script 不定参数问题

#22

帖子 lilydjwg » 2011-05-02 18:52

fanhe 写了:都跟你提过有 a:000 了,还是不知道怎么用啊。

凡是用上了 exec,都没有什么好的可读性

前些天实现的把 s: 作其他脚本的回调函数,才叫一个绕弯。
Vim 里很多时候不得不 exec。实在不行还是用 Python 吧。
头像
自由建客
帖子: 13468
注册时间: 2008-07-30 23:21
系统: Debian stable AMD64

Re: vim script 不定参数问题

#23

帖子 自由建客 » 2011-05-02 19:55

fanhe, 不明白你到底想要表达什么
头像
自由建客
帖子: 13468
注册时间: 2008-07-30 23:21
系统: Debian stable AMD64

Re: vim script 不定参数问题

#24

帖子 自由建客 » 2011-05-02 22:19

acer4740, 有 bug ,join() 是把内容连接成字符串,不行。又返回 13 楼的方案了。
lilydjwg说的 call() 也是可以的,只是觉得要先构造列表比较麻烦。
回复