如何在 if 语句中使用 expr?
How to use expr inside if statement?
我还没有弄明白如何将 expr 嵌入到其他结构中。
我可以轻松输入
set i {1 2 3}
expr {[llength $i]} #result is 3
然而,经过长时间的研究,我还没有找到一种方法将其放入 if
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"
}
这非常罕见。
我还没有弄明白如何将 expr 嵌入到其他结构中。 我可以轻松输入
set i {1 2 3}
expr {[llength $i]} #result is 3
然而,经过长时间的研究,我还没有找到一种方法将其放入 if
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"
}
这非常罕见。