题
我想制作几个具有相同参数的对象,因此我尝试将它们存储在返回它们的Proc中。但是解释器将返回结果评估为一个参数,而不是几个。我的Proc是:
proc element_param {} {
return "-filled 1\
-visible 1\
-linewidth 1\
-linecolor yellow\
-fillcolor yellow\
-relief roundraised\
-linewidth 2"
}
我使用它:
$this/zinc add rectangle 1 [list "100" "100" "200" "200"] [element_param]
如何将它们变成几个不同的参数?
解决方案
使用TCL 8.5及以上使用{*}操作员来展开参数列表:
$this/zinc add rectangle 1 $coords {*}[element_param]
使用以前的版本,您可以使用评估来扩展列表:
eval [linsert [element_param] 0 $this/zinc add rectangle 1 $coords]
这是等效的。
不隶属于 StackOverflow