ZetCode

Tcl continue 命令

最后修改于 2025 年 4 月 3 日

Tcl 的 continue 命令用于跳过循环的当前迭代。它会立即跳转到下一个迭代,而不会执行循环体中剩余的命令。

基本定义

continue 命令是一个循环控制命令,可与 whileforforeach 循环一起使用。执行时,它会跳到下一个迭代。

语法:continue。它不接受任何参数,也没有返回值。它只能在循环体内部使用。

while 循环中的基本 continue

本示例演示了在 while 循环中最简单的 continue 用法,用于跳过偶数。

basic_continue.tcl
set i 0
while {$i < 10} {
    incr i
    if {$i % 2 == 0} {
        continue
    }
    puts "Odd number: $i"
}

该循环打印 1 到 10 之间的奇数。当 $i 为偶数时,continue 会跳过 puts 命令并跳转到下一个迭代。

for 循环中的 continue

本示例展示了在 for 循环中使用 continue 来跳过特定值。

continue_for.tcl
for {set i 1} {$i <= 5} {incr i} {
    if {$i == 3} {
        continue
    }
    puts "Processing item $i"
}

该循环处理数字 1 到 5,但使用 continue 命令跳过数字 3。输出显示了除 3 之外的所有数字。

foreach 循环中的 continue

本示例在 foreach 循环中使用 continue 来跳过列表中的某些元素。

continue_foreach.tcl
set fruits {apple banana cherry date elderberry}
foreach fruit $fruits {
    if {[string length $fruit] > 6} {
        continue
    }
    puts "Short fruit name: $fruit"
}

该循环处理列表中的每种水果,但会跳过名称长度超过 6 个字符的水果。只打印较短的水果名称。

嵌套循环中的 continue

本示例演示了在嵌套循环中使用 continue 时,它只会影响最内层的循环。

continue_nested.tcl
for {set i 1} {$i <= 3} {incr i} {
    puts "Outer loop iteration $i"
    for {set j 1} {$j <= 3} {incr j} {
        if {$j == 2} {
            continue
        }
        puts "  Inner loop value: $j"
    }
}

外层循环运行三次。内层循环会跳过 $j 等于 2 的迭代。continue 只影响出现它的内层循环。

条件逻辑中的 continue

本示例展示了 continue 与更复杂的条件逻辑结合使用来过滤数据。

continue_conditional.tcl
set numbers {12 7 15 3 20 8 11}
foreach num $numbers {
    if {$num < 10} {
        continue
    }
    if {$num % 2 == 0} {
        puts "$num is even and >= 10"
    } else {
        puts "$num is odd and >= 10"
    }
}

该循环处理列表中的数字,但会跳过任何小于 10 的数字。对于大于等于 10 的数字,它会检查它们是偶数还是奇数,并打印相应的消息。

错误处理中的 continue

本示例演示了如何使用 continue 来处理循环处理中潜在的错误。

continue_error.tcl
set values {5 0 8 "text" 10}
foreach val $values {
    if {![string is integer $val]} {
        puts "Skipping non-integer value: $val"
        continue
    }
    if {$val == 0} {
        puts "Cannot divide by zero"
        continue
    }
    set result [expr {100 / $val}]
    puts "100 / $val = $result"
}

该循环尝试用每个值除以 100。它使用 continue 跳过非整数值和零值。这可以防止在处理其余有效值时出错。

最佳实践

本教程涵盖了 Tcl 的 continue 命令,并提供了实际示例,展示了它在不同循环场景中的用法。

作者

我的名字是 Jan Bodnar,我是一位充满热情的程序员,拥有丰富的编程经验。我自 2007 年以来一直在撰写编程文章。迄今为止,我已撰写了 1400 多篇文章和 8 本电子书。我在编程教学方面拥有十多年的经验。

列出 所有 Tcl 教程