将列表传递给Tcl过程的规范方法是什么?
如果可以的话,我真的很喜欢它,这样列表会自动扩展为可变数量的参数。
这样的事情:
set a {b c}
myprocedure option1 option2 $a
和
myprocedure option1 option2 b c
是等效的。
我敢肯定我以前看过,但在网上找不到它。使这两种情况等效的任何帮助(和代码)将不胜感激。
这是否被视为标准的Tcl约定。还是我甚至吠错了树?
最佳答案
这取决于您使用的Tcl版本,但是:
对于8.5:
set mylist {a b c}
myprocedure option1 option2 {*}$mylist
对于8.4及以下版本:
set mylist {a b c}
eval myprocedure option1 option2 $mylist
# or, if option1 and 2 are variables
eval myprocedure [list $option1] [list $option2] $mylist
# or, as Bryan prefers
eval myprocedure \$option1 \$option2 $mylist
关于list - 将 list 传递给Tcl程序,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1596711/