大括号内TCL中的变量替换

时间:2018-09-28 16:31:34

标签: tcl

我正在尝试在花括号内执行变量替换,我知道这在TCL中是不可行的。

我正在尝试的代码:

interface code -clip {$x1 $y1 $x2 $y2}

接口代码是第三方TCL函数,具有一个名为clip的选项,该选项可读取花括号内的x1,y1,x2,y2坐标。

我需要在花括号内输入x1,y2的值。

1 个答案:

答案 0 :(得分:2)

在Tcl中,{…}语法从技术上来说的意思是“完全不要替代”。值传递给的命令可能会用那些字符来做自己的事情,而这些事情看起来很像替换(例如,如果将单词作为脚本进行评估,则if和{{ 1}}和for和…来做),但是Tcl的核心语法只是不理它们,而是将它们传递通过。

要获得想要的东西,有几种选择。您可以在传递值之前进行替换-如果选择这样做,该命令从字面上看不到您已经完成了此操作-或者您可以让该命令进行替换(如果是第三项则不是有用的建议-派对代码,当然)。

要自己进行替换,您可以一个

while
interface code -clip [list $x1 $y1 $x2 $y2]
interface code -clip "$x1 $y1 $x2 $y2"

如果命令采用列表(您的情况看起来像;它似乎是坐标列表),则第一个选项是好的。如果命令采用字符串,则第二个选项很好。当事情变得复杂时,第三个选择是好的!尽量避免非常复杂的事情通常是个好主意;程序很难编写和读取,而不会故意使它们变得更难以理解。