跳出本次循环For
、While
或Do While
命令并重新执行循环。
-
CONTINUE
命令 只在块级语法有效。
CONTINUE:pc
参数
- pc 可选,后置表达式
CONTINUE
命令在FOR
、WHILE
或DO WHILE
命令之后的代码块内使用。 继续使执行跳回FOR
、WHILE
或DO WHILE
命令。FOR
、WHILE
或DO WHILE
命令测试条件,并基于该测试重新执行代码块循环。因此,CONTINUE
命令对执行的影响与到达代码块的右大括号(})完全相同。
Continue
不接受任何参数(后置条件除外)。必须至少用两个空格将其与同一行上紧随其后的命令隔开。
CONTINUE
可能导致执行跳出TRY
或CATCH
块以返回其控制流语句。
pc
可使命令具有条件的可选后置条件表达式。如果后置条件表达式为TRUE(计算结果为非零数值),则Caché执行CONTINUE
命令。如果后置条件表达式为假(计算结果为零),则Caché不执行该命令。
下面的示例将CONTINUE
与后置条件表达式一起使用。它遍历并打印出从1到10的所有数字,3除外:
/// d ##class(PHA.TEST.Command).TestContine()
ClassMethod TestContine()
{
FOR i=1:1:10 {
IF i # 2 {
CONTINUE:i=3
WRITE !,i," 是奇数"
}
ELSE {
WRITE !,i," 是偶数"
}
}
WRITE !,"结束循环"
QUIT
}
DHC-APP>d ##class(PHA.TEST.Command).TestContine()
1 是奇数
2 是偶数
4 是偶数
5 是奇数
6 是偶数
7 是奇数
8 是偶数
9 是奇数
10 是偶数
结束循环
下面的示例显示两个嵌套的for
循环。Continue
跳回到内部循环中的for
:
/// d ##class(PHA.TEST.Command).TestContineFor()
ClassMethod TestContineFor()
{
FOR i=1:1:3 {
WRITE !,"外部循环: i=",i
FOR j=2:2:10 {
WRITE !,"内部循环: j=",j
IF j '= 8 {
CONTINUE
}
ELSE {
WRITE !," 输出8"
}
}
WRITE !,"回到外部循环"
}
QUIT
}
DHC-APP>d ##class(PHA.TEST.Command).TestContineFor()
外部循环: i=1
内部循环: j=2
内部循环: j=4
内部循环: j=6
内部循环: j=8
输出8
内部循环: j=10
回到外部循环
外部循环: i=2
内部循环: j=2
内部循环: j=4
内部循环: j=6
内部循环: j=8
输出8
内部循环: j=10
回到外部循环
外部循环: i=3
内部循环: j=2
内部循环: j=4
内部循环: j=6
内部循环: j=8
输出8
内部循环: j=10
回到外部循环
以下示例显示退出TRY
块的CONTINUE
。CONTINUE
跳回到TRY
块外部的FOR
语句。
/// d ##class(PHA.TEST.Command).TestContineTry()
ClassMethod TestContineTry()
{
FOR i=1:1:10 {
WRITE !,"For循环的顶部"
TRY {
WRITE !,"在TRY块中: i=",i
IF i=7 {
WRITE " 幸运7"
}
ELSE {
CONTINUE
}
}
CATCH exp {
WRITE !,"Catch块异常处理程序",!
WRITE "Error code=",exp.Code
RETURN
}
WRITE !,"FOR循环的底部"
}
QUIT
}
DHC-APP>d ##class(PHA.TEST.Command).TestContineTry()
For循环的顶部
在TRY块中: i=1
For循环的顶部
在TRY块中: i=2
For循环的顶部
在TRY块中: i=3
For循环的顶部
在TRY块中: i=4
For循环的顶部
在TRY块中: i=5
For循环的顶部
在TRY块中: i=6
For循环的顶部
在TRY块中: i=7 幸运7
FOR循环的底部
For循环的顶部
在TRY块中: i=8
For循环的顶部
在TRY块中: i=9
For循环的顶部
在TRY块中: i=10