Jua*_*uan 15 arguments list tcl
将列表传递给Tcl过程的规范方法是什么?
我真的很喜欢它,如果我能得到它,以便列表自动扩展为可变数量的参数.
这样的东西:
set a {b c}
myprocedure option1 option2 $a
Run Code Online (Sandbox Code Playgroud)
和
myprocedure option1 option2 b c
Run Code Online (Sandbox Code Playgroud)
是等价的.
我相信我以前见过这个,但我无法在网上找到它.任何帮助(和代码)使两个案件等效,将不胜感激.
这被认为是标准的Tcl惯例.或者我甚至吠叫错误的树?
RHS*_*ger 21
这取决于您使用的Tcl版本,但是:对于8.5:
set mylist {a b c}
myprocedure option1 option2 {*}$mylist
Run Code Online (Sandbox Code Playgroud)
对于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
Run Code Online (Sandbox Code Playgroud)