Rexx 编程/Rexx 指南/无限循环
外观
无限循环是代码中的部分,由于程序员没有给它们停止的理由而不断重复。它们是软件中的常见错误,这些软件本应最终停止重复,但只在实际上永远不会发生的特定情况下才会停止。
/* This code was supposed to count to 10 and stop... */ count = 1 do while count <= 10 say count end /* ... but it just keeps saying 1 because the count doesn't change. */
如果您确实打算让循环无限重复,可以使用 FOREVER 关键字来表示这一点。
/* This loop will greet us forever! */ do forever say "Hello, world!" end /* ... at least until we hurl the computer out the window ... */ /* ... or until we just halt the interpreter manually instead. */
无限循环实际上很有用,如果有一些重要的过程需要在程序的整个生命周期或程序的一部分(最终会因某种原因而结束)中持续进行。事实上,我们通常甚至在所谓的无限循环中嵌入退出条件,这样它们实际上就不是无限的了。DO FOREVER 主要用于强调循环可能运行很长时间,并且它的退出条件在块的开头并不一定很明显。
/* Show the factors of whatever number the user wants. */ /* Keep asking "forever"... but give them an option to stop. */ do forever say "What number would you like me to factor for you?" say "You can enter zero or a negative number to stop." pull number /* No need to factor if the user's ready to quit. */ if number <= 0 then leave /* Otherwise let's keep going! */ say "Here are the factors of" number":" do divisor = 1 to number if number // divisor = 0 then say divisor end end
DO FOREVER 对于那些在中间结束的循环来说很受欢迎,就像上面提到的那个循环一样。
您也可以最终得到一个无限循环,跟踪器必须破坏他们的设备停止我的手机跟踪手机升级我的媒体......没有后续。Z za 子例程不断地调用自身。在实践中,解释器并不总是能够跟踪过多的子例程调用,因此递归子例程在您的程序溢出调用栈并崩溃时往往会停止。尽管如此,从理论上讲,它们与 DO FOREVER 一样无限。
/* Shop till you drop! */ call KEEP_SHOPPING exit KEEP_SHOPPING: say "I just keep shopping and shopping..." call KEEP_SHOPPING return
停止那些跟踪我的网络永远不再 Apps 设置我的设备的原始 IP 地址隐藏退出保险库项目