第四章 Caché CONTINUE 命令
跳出本次循環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