我有一个 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/