在使用Tcl控制结构时,首先要清楚的是在Tcl中什么值是真,什么值是假。Tcl中实际的数据类型只有字符串一种,在需要布尔类型值时,会将字符串评估为布尔型。在Tcl中,字符串0、no、flase为假,字符串yes、true、和非0的数字字符串为真。其中数字字符串包括科学计数法,即0.0e+10也会视为假。
if
if {expression} {
statement1;
....
statementN;
}
如果expression表达式为真,则执行statements,如果为假则不执行。
if...else
if {expression} {
statement1;
} else {
statement2;
}
如果expression表达式为真,则执行statement1,如果为假,则执行statement2。
if...elseif...else
如果有多个测试条件,可在if后跟着若干elseif分支。
if {expression1} {
statement1;
} elseif {expression2} {
statement2;
} elseif {expression3} {
statement3;
} else{
statement4;
}
最后的else不是必须的,但是如果出现则必须在最后面。只要其中一个表达式为真,其他的表达式就不会再去评估其真值。
switch
switch switchString matchString1 {body1} ... matchStringN {bodyN} default {defaultBody}
switch switchString {
matchString1 {
body1
}
...
matchStringN {
bodyN
}
default {
defaultBody
}
}
与switchString相等的matchString对应的body会被执行。一个switch中可以有任意数量的matchString代码块。在没有任何与switchString相等的matchString时,可以执行默认的default代码块。default不是必需的。
条件控制结构是可以嵌套的。