在Tcl中使用proc复制参数

发布于 2024-12-10 18:01:45 字数 443 浏览 0 评论 0原文

我想创建多个对象,所有对象都具有相同的参数,因此我尝试将它们存储在返回它们的过程中。但解释器将返回结果作为一个参数而不是多个参数进行计算。我的过程是:

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]

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

I want to make several objects, all with the same parameters, so I tried to store them in a proc that returns them. But the interpreter evaluates the returning result as one parameter, instead of several. my proc is:

proc element_param {} {
    return "-filled 1\
        -visible 1\
        -linewidth 1\
        -linecolor yellow\
        -fillcolor yellow\
        -relief roundraised\
        -linewidth 2"
}

and I use it with:

$this/zinc add rectangle 1 [list "100" "100" "200" "200"] [element_param]

How do I turn them into several different parameters?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

通知家属抬走 2024-12-17 18:01:45

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

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

在以前的版本中,您可以使用 eval: 来扩展列表,

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

这是等效的。

With tcl 8.5 and above use the {*} operator to expand the list of parameters:

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

with previous versions you can expand lists using eval:

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

which is equivalent.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文