我想数从1到10但是跳过5.这只适用于我在下面的开头放置incr的时候。为什么?我认为incr在其他之后将增加到2 3 4等然后跳过5然后进入10.但它在5停止并且永远不会继续。
这是有效的
set a 1
set b 10
while {$a < $b} {
incr a
if {$a == 5} {
continue
} else {
puts $a
}
}
这不起作用
while {$a < $b} {
if {$a == 5} {
continue
} else {
puts $a
}
incr a
}
答案 0 :(得分:4)
考虑一下continue命令的逻辑:它跳过循环的其余部分,并从头开始。当a == 5时,if语句为true,因此您跳过循环的其余部分,这也跳过incr
命令。转到循环的顶部,a仍为5,然后再次跳过循环的其余部分。实际上,您正在遇到无限循环。修复它的一种方法是不使用continue命令:
set a 1
set b 10
while {$a <= $b} {
if {$a != 5} {
puts $a
}
incr a
}
顺便说一下,第一种方式并不是很有效:它跳过1号并从2开始。