大括号内 TCL 中的变量替换

1 tcl

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

我正在尝试的代码:

interface code -clip {$x1 $y1 $x2 $y2}
Run Code Online (Sandbox Code Playgroud)

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

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

Don*_*ows 6

在 Tcl 中,{…}语法技术上的意思是“对此完全不做任何替换”。该命令值被传递给可能会做自己的事与人物,以及那些东西看起来很像取代(例如,如果它正在评估这个词作为一个脚本,这是ifforwhile和...做),但Tcl 的核心语法只是让它们单独存在并传递它们。

为了得到你想要的东西,有几个选择。你可以在传入值之前进行替换——如果你选择这样做,命令实际上看不到你已经这样做了——或者你可以得到命令来进行替换(如果它是第三个,这不是一个有用的建议——派对代码,当然)。

要自己进行替换,您可以执行以下操作之一

interface code -clip [list $x1 $y1 $x2 $y2]
Run Code Online (Sandbox Code Playgroud)
interface code -clip "$x1 $y1 $x2 $y2"
Run Code Online (Sandbox Code Playgroud)
interface code -clip [subst {$x1 $y1 $x2 $y2}]
Run Code Online (Sandbox Code Playgroud)

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