# <6> 循环
# >>> for loop
# >>> 循环中的为已知变量赋值,都是用set variable value
set number [expr {int (1.2/0.1) }]
for {set i o} {$i <= $number} {incr i} {
set x [expr {$i*0.1}]
puts $x
}
# >>> while loop
set x 0.0
set delta 0.1
while {$x < 1.2+0.5*$delta } {
set x [expr {$x + $delta}]
puts $x
}
# >>> break : 结束while循环
# >>> continue: 结束本次循环,进入下一个循环,继续测试continue是否为真
while {$x < 5} {
set x [expr {$x + 1}]
if {$x > 7} break
puts "x is $x"
}
#>>>打印结果>>>
# x is 2
# x is 3
# x is 4
# x is 5
set x 0
while {$x < 5} {
set x [expr {$x + 1}]
if {$x > 3} continue
puts "x is $x"
}
#>>>打印结果>>>
#x is 1
#x is 2
#x is 3
# 分支
# >>> if...else ...elseif
# >>> if {condition} //{}也可省略
set x 1
if {$x == 2} {
puts "$x is 2"
} else {
puts "$x is not 2"
}
if {$x != 1} {
puts "$x is != 1"
} else {
puts "$x is 1"
}
if {$x==1} {
puts "GOT 1"
}
# >>> switch
# >>> 和C语言的switch的差别是,tcl中不仅仅可以对比数字,还可以对比string
set X "ONE"
set y 1
set z ONE
switch $X {
"$z" {
set y1 [expr {$y+1}]
puts "MATCH \$z. $y+$z is $y1"
}
ONE {
set y1 [expr {$y+1}]
puts "MATCH ONE.$y+ONE is $y1"
}
TWO {
set y1 [expr {$y+2}]
puts "MATCH TWO.$y+TWO is $y1"
}
default {
puts"$X is NOT A MATCH"
}
}
#>>>打印结果>>>
# MATCH ONE.1+ONE is 2