tcl - 花括号内 TCL 中的变量替换
问题描述
我正在尝试在花括号中执行变量替换,据我所知,这在 TCL 中是不可行的。
我正在尝试的代码:
interface code -clip {$x1 $y1 $x2 $y2}
接口代码是第三方 TCL 函数,它有一个名为 clip 的选项,它读取大括号内的 x1,y1,x2,y2 坐标。
我需要在花括号内输入 x1,y2 的值。
解决方案
在 Tcl 中,{…}
语法在技术上意味着“对此不做任何替换”。将值传递给的命令可能对这些字符执行自己的操作,并且这些操作可能看起来很像替换(例如,如果它正在将单词作为脚本评估,这就是if
and for
and and while
and ... 所做的),但是Tcl 的核心语法只是不理会它们并通过它们。
为了得到你想要的,有几个选择。你可以在传递值之前进行替换——如果你选择这样做,命令实际上看不到你已经这样做了——或者你可以让命令进行替换(如果它是第三个,这不是一个有用的建议——党的代码,当然)。
要自己进行替换,您可以执行以下操作之一:
interface code -clip [list $x1 $y1 $x2 $y2]
interface code -clip "$x1 $y1 $x2 $y2"
interface code -clip [subst {$x1 $y1 $x2 $y2}]
如果命令采用列表(您的情况看起来像;它似乎是坐标列表),则第一个选项很好。如果命令采用字符串,则第二个选项很好。当事情变得复杂时,第三个选项很好!尽量避免非常复杂的东西通常是个好主意。程序很难编写和阅读,而不是故意让它们更难理解。
推荐阅读
- html - CSS:textarea line-height 匹配行号 line-height?
- typescript - 更改深度嵌套对象结构中的值类型
- c# - 如果它等于它的反转,如何反转布尔值
- python - 扩展两个列表并在一行中取中位数
- nativescript - NativeScript 无法启动 iOS 模拟器
- python - 读取在 SSH 服务器上执行的命令的输出,使用 Paramiko 作为字符串,而不是字节
- python - 为什么我的字符串反转 my_str[len(my_str)-1:-1:-1] 不产生输出?
- flutter - 基于 Firebase 云消息传递 (FCM) 的颤振状态下的食品配送?
- excel - VBA无法识别工作表激活
- symfony - Symfony - Sonata 管理员 - 覆盖验证