Tcl--循环
Tcl里的循环主要就是while和for循环,循环也可以嵌套使用。
while
只要给定的条件为真,就会重复执行目标代码。
while {condition} {
body...
}
body部分能不能执行全由condition决定,有可能一直执行也有可能一次都不执行。比如condition为定值1,那body部分就会被一直执行也就是死循环(terminal里ctrl+c能打断),若condition为定值0,那body部分就会被忽略,可应用为多行注释。
#!/usr/bin/tclsh
set var1 0
set var2 1
while {$var2 < 100} {
set var1 [expr $var1 + $var2]
incr var2
}
puts "$var1"
执行结果为
4950
For
基本结构如下:
for {init} {condition} {incr} {
body...
}
初始化部分仅循环开始执行一次,若不需要在此处添加任何语句,可以用分号代替;
condition为true则执行循环主体;
执行循环体后则流程跳到incr部分,用于更新循环控制变量,也可以是空白,用分号;
执行incr部分后再次判断条件,若为true则继续执行循环体。
比如上面例子替换成for语句为:
#!/usr/bin/tclsh
for {set var1 0;set var2 1} {$var2 < 100} {incr var2} {
set var1 [expr $var1 + $var2]
}
puts "$var1"
执行结果不变
循环控制
循环控制语句可以改变循环的执行状态。
continue
使循环跳过continue后的剩余的循环体部分,并开始下一次判断条件。
#!/usr/bin/tclsh
for {set var1 0;set var1 0} {$var2 < 100} {incr var2} {
if { $var2 == 50} {
continue
}
set var1 [expr $var1 + $var2]
}
puts "$var1"
执行结果为
4900
break
用于终止循环,当循环体内执行到break时,循环会立刻跳出,并开始执行循环以后的语句。若是嵌套循环,break只能终止break所在的那一层循环,同样也适用于switch语句。
例如将上面的代码中continue替换成break结果就会不同:
#!/usr/bin/tclsh
for {set var1 0;set var2 1} {$var2 < 100} {incr var2} {
if { $var2 == 50} {
break
}
set var1 [expr $var1 + $var2]
}
puts "$var1"
执行结果为
1225