当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] 关于 继续

作者:精品下载站 日期:2024-12-14 02:23:39 浏览:13 分类:玩电脑

关于 继续


简短描述

描述 continue 语句如何立即将程序流返回到程序循环、switch 语句或 trap 语句的顶部。

详细描述

continue 语句提供了一种退出当前控制块但继续执行而不是完全退出的方法。该语句支持标签。标签是您分配给脚本中的语句的名称。

在循环中使用 continue

未标记的 continue 语句立即将程序流返回到由 forforeachdo 控制的最内层循环的顶部while 语句。循环的当前迭代终止,循环继续下一次迭代。

在以下示例中,如果 $ctr 变量等于 5,程序流程将返回到 while 循环的顶部。因此,1 到 10 之间的所有数字除 5 外均显示:

while ($ctr -lt 10)
{
    $ctr += 1
    if ($ctr -eq 5)
    {
        continue
    }

    Write-Host -Object $ctr
}

使用 for 循环时,会在 <Repeat> 语句处继续执行,然后是 <Condition> 测试。在下面的示例中,不会发生无限循环,因为 $i 的递减发生在 continue 关键字之后。

#   <Init>  <Condition> <Repeat>
for ($i = 0; $i -lt 10; $i++)
{
    Write-Host -Object $i
    if ($i -eq 5)
    {
        continue
        # Will not result in an infinite loop.
        $i--
    }
}

在循环中使用带标签的 continue

带标签的 continue 语句终止迭代的执行,并将控制权转移到目标封闭迭代或 switch 语句标签。

在以下示例中,当 $conditionTrue 时,最里面的 for 终止,并继续迭代第二个 forlabelB处循环。

:labelA for ($i = 1; $i -le 10; $i++) {
    :labelB for ($j = 1; $j -le 10; $j++) {
        :labelC for ($k = 1; $k -le 10; $k++) {
            if ($condition) {
                continue labelB
            } else {
                $condition = Update-Condition
            }
        }
    }
}

在 switch 语句中使用 continue

switch 中未标记的 continue 语句终止当前 switch 迭代的执行,并将控制权转移到 switch 的顶部> 获取下一个输入项。

当有单个输入项时,continue 退出整个 switch 语句。当 switch 输入是集合时,switch 测试集合的每个元素。 continue 退出当前迭代,switch 继续下一个元素。

switch (1,2,3) {
  2 { continue }  # moves on to the next element, 3
  default { $_ }
}
1
3

在 trap 语句中使用 continue

如果 trap 语句主体中执行的最后一条语句是 continue,则捕获的错误将被静默忽略,并继续执行紧随导致 trap 的语句之后的语句发生。

不要在循环、开关或陷阱之外使用 continue

当在直接支持它的构造(循环、switchtrap)之外使用 continue 时,PowerShell 会查找调用堆栈 用于封闭结构。如果找不到封闭的构造,当前运行空间将被悄悄终止。

这意味着,如果函数和脚本无意中在支持它的封闭构造之外使用了 continue ,可能会无意中终止其调用者。

在管道内使用 continue(例如 ForEach-Object 脚本块)不仅会退出管道,还可能终止整个运行空间。

参见

  • about_Break
  • about_比较_运算符
  • 关于_For
  • about_Throw
  • about_Trap
  • about_Try_Catch_Finally

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯