开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第44天,点击查看活动详情
- 对比
for循环传统点语法与块语法使用ret与quit的优势。- 块语法
ret可直接退出返回值。 - 点语法则需要用循环外变量去接收,在去判断返回值。
- 块语法
ClassMethod Retrun3(x)
{
for i = 1 : 1 : 5 {
w i,!
ret:..Retrun4(x) "程序报错!"
}
ret "结束"
}
ClassMethod Retrun5(x) As %Boolean
{
s err = 0
for i = 1 : 1 : 5 q:err d
.w i,!
.s err = ..Retrun4(x)
q:err "程序报错!"
q "结束"
}
ClassMethod Retrun4(x) As %Boolean
{
q x
}
retrun退出嵌套的TRY块和所有封闭的块,
ClassMethod Retrun6()
{
try {
w "在TRY块中",!
s x = 5 / 0
w "此行不会显示"
}
catch exp {
w "在CATCH块中",!
w "Error Name: ",exp.Name,!
try {
w "在嵌套的TRY块中",!
ret
}
catch exp1 {
w "在嵌套的CATCH块中",!
w "Error Name: ",exp1.Name,!
}
w "QUIT显示此外部CATCH块行",!
}
w "结束"
}
- 在
Terminal下,retrun n从程序堆栈中清除指定数量的级别。可以使用$STACK特殊变量来确定程序堆栈上的当前级别数。
DHC-APP>n
DHC-APP 1S1>n
DHC-APP 2N1>n
DHC-APP 3N1>ret 1
DHC-APP 2N1>ret 1
DHC-APP 1S1>ret 1
DHC-APP>
- 在
Terminal下,不带参数的retrun从程序堆栈中清除所有级别。
DHC-APP>n
DHC-APP 1S1>n
DHC-APP 2N1>n
DHC-APP 3N1>ret
DHC-APP>
QUIT和RETURN命令都终止代码块或方法的执行。在没有参数的情况下,它们只需退出从中调用它们的代码。有参数情况下,它们将参数用作返回值。退出当前上下文,退出到封闭上下文。Return将当前程序退出到程序被调用的位置。
| 位置 | QUIT | RETURN |
|---|---|---|
| 方法或例程代码(非块结构) | 退出方法或例程,返回到调用方法或例程。 | 退出方法或例程,返回到调用方法或例程。 |
Try或Catch块 | 将Try/Catch块结构对退出到方法或例程中的下一个代码。如果从嵌套的TRY或CATCH块发出,则从一级退出到封闭的TRY或CATCH块。 | 退出方法或例程,返回到调用方法或例程。 |
DO或XECUTE | 退出方法或例程,返回到调用方法或例程。 | 退出方法或例程,返回到调用方法或例程。 |
IF | 退出方法或例程,返回到调用方法或例程。但是,如果嵌套在For、While或Do While循环中,则退出块结构并继续代码块后下一行。 | 退出方法或例程,返回到调用方法或例程。 |
FOR, WHILE, DO WHILE | 退出块结构并继续代码块之后的下一行。如果从嵌套块发出,则从上级退出到封闭块。 | 退出方法或例程,返回到调用方法或例程。 |