Tcl:参数评估是否保证是从左到右的?

标签 tcl

我有一个 Tcl 程序,我经常在其中找到以下类型的表达式:

proc func {} {...}
...
lappend arr([set v [func]]) $v

最后一行的本意是

set v [func]
lappend arr($v) $v

它显然有效。我想知道的是:它是“偶然”工作的,还是 Tcl 保证传递给 lappend 的第一个参数先于第二个参数求值?

最佳答案

Tcl 总是从左到右求值,你可以在 documentation 上看到,我引用部分:

Substitutions take place from left to right, and each substitution is evaluated completely before attempting to evaluate the next. Thus, a sequence like:

set y [set x 0][incr x][incr x]

will always set the variable y to the value, 012.

关于Tcl:参数评估是否保证是从左到右的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26561229/

相关文章:

scope - Tcl:如何从不同的命名空间调用 proc,同时从它的命名空间传递一个变量给我的 proc?

python-3.x - `new_root.mainloop()` 不会使主窗口无响应

regex - TCL 中括号之间的非贪婪捕获 : #\( . *?\)

user-interface - 你如何为 Tk 小部件设置默认字体

file - 如何将文件转换为 tcl 列表?

linux - 如何在 Linux 中更新 Tclsh?

TCL:获取对象的类名?

variables - 从导入的过程访问 Tcl 命名空间变量

c - 如何在TCL中运行预编译的C代码?

tcl - 是否可以更改笔记本标签的宽度?