1

我想制作几个对象,都具有相同的参数,所以我尝试将它们存储在返回它们的 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]

如何将它们变成几个不同的参数?

4

1 回答 1

7

对于 tcl 8.5 及更高版本,使用 {*} 运算符来扩展参数列表:

$this/zinc add rectangle 1 $coords {*}[element_param]

对于以前的版本,您可以使用 eval 扩展列表:

eval [linsert [element_param] 0 $this/zinc add rectangle 1 $coords]

这是等效的。

于 2011-10-18T18:04:09.020 回答