继续不在 Rebol2 中。但它在 Rebol3 中并且工作得很好:
loop 2 [
print {"This'll print", {HostileFork} said.}
continue
print {"This won't print", {HostileFork} said.}
]
你会得到输出:
“这会打印出来”,{HostileFork} 说。
“这会打印出来”,{HostileFork} 说。
据我所知,没有办法在 Rebol2 中实现 continue。
好的,基于@DocKimbel 的回答,您可以在 Rebol2 中执行此操作:
old-loop: :loop
loop: func [count [integer!] block [block!]] [
old-loop count [catch block]
]
continue: does [throw 'continue]
loop 2 [
print {"This'll print", {HostileFork} said.}
continue
print {"This won't print", {HostileFork} said.}
]
注意:BREAK 和 CONTINUE 的内部实现方法确实使用了与 Rebol 中的 THROW 相同的机制......这是相对轻量级的,而不是异常处理。重要的是要知道 THROW不是您应该用于错误的……现代 Rebol 构建 ( Ren/C ) 甚至不允许您抛出一个。您应该改用 FAIL。