If statement 如何在if语句中使用expr?
我还没有设法理解如何在其他构造中嵌入expr。 我打字很容易If statement 如何在if语句中使用expr?,if-statement,tcl,expr,If Statement,Tcl,Expr,我还没有设法理解如何在其他构造中嵌入expr。 我打字很容易 set i {1 2 3} expr {[llength $i]} #result is 3 然而,经过长时间的研究,我还没有找到一种方法把它放在里面 if {"magic tcl code with expr and llength==3 required here"} { puts "length is 3" } if命令具有内置表达式。具体来说,if和expr都希望和表达式作为第一个参数: if expression
set i {1 2 3}
expr {[llength $i]} #result is 3
然而,经过长时间的研究,我还没有找到一种方法把它放在里面
if {"magic tcl code with expr and llength==3 required here"} {
puts "length is 3"
}
if
命令具有内置表达式。具体来说,if
和expr
都希望和表达式作为第一个参数:
if expression ...
expr expression
因此,如果您想执行expr{[llength$i]}
,只需执行以下操作:
if {[llength $i]} {
}
但说实话,我不相信你想处决我
expr {[llength $i]}
我想你想要的是检查长度是否是3,因此你真正想要的是
expr {[llength $i] == 3}
如果是这种情况,则If
版本为:
if {[llength $i] == 3} {
puts "llength is 3"
}
if
的第一个参数是表达式,正如expr
的参数是表达式一样
if {[llength $i] == 3} {
puts "length is 3"
}
确实可以使用[
方括号]
将expr
放入表达式中,就像使用任何命令一样,但通常没有理由这样做;这只会让一切变得更加冗长
if {[ expr {[llength $i]} ] == 3} {
puts "length is 3"
}
当你有一个动态的表达式时,上述规则的例外就出现了;此时,将expr
放在表达式中是有意义的,因为它允许有效地对外部部分进行字节码编译
# Trivial example to demonstrate
set myexpression {[llength $i]}
if {[expr $myexpression] == 3} {
puts "evaluated $myexpression to get three"
}
那是相当罕见的