Tcl:保证布尔表达式的求值顺序吗?

时间:2018-10-11 04:32:13

标签: conditional tcl expression

假设我有一个条件Tcl表达式,它是步骤的布尔组合。

  1. 是否总是从左到右计算表达式(不包括括号)?
  2. 如果表达式为真,则其余的评估会停止吗?

我有这段代码可以解析文件并有条件地替换行中的内容。

set fp [ open "file" ]
set data [ read $fp ]
close $fp
foreach line [ split $data \n ] {
    if { $enable_patch && [ regsub {<some_pattern>} $line {<some_other_pattern>} line ]} {
        puts $outfp $line
        <do_some_more_stuff>
    }
}

所以我的问题是,除非enable_patch为真,否则我不希望修改该行。现在我的测试表明该代码在Linux上的Tcl 8.5中是确定性的。但是我想知道这是否会在其他条件/版本/操作系统下中断。

1 个答案:

答案 0 :(得分:1)

是的,||&&运算符是TCL中的“短路”运算符。这意味着您可以依靠从左到右对它们进行求值,并且一旦知道表达式的值,该求值就会停止。