将列表传递给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/

10-16 16:22