Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
If statement 如何在if语句中使用expr?_If Statement_Tcl_Expr - Fatal编程技术网

If statement 如何在if语句中使用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

我还没有设法理解如何在其他构造中嵌入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 ...
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"
}
那是相当罕见的