以下是示例代码
while true
while true
exit all loops when condition true
end
end
有人可以告诉我,当第二个循环中断时,是否可以退出第一个循环,但后来我只想使用一个break命令而没有加注。
答案 0 :(得分:7)
你知道什么比只使用一个break
更好吗?完全不使用任何东西! :)
很少使用throw/catch
在这里很好
catch(:done) do
while cond1
while cond2
throw :done if condition
end
end
end
答案 1 :(得分:1)
好吧,显然布尔标志是禁止的。糟糕。
另一件需要注意的事情就是捕捉错误,但是你说你不想这样做,或者将它包装在一个方法中并返回。老实说,这似乎不是一种方式,但这是我能想到的最简单的方法:
catch (:exit) do
while true
while true
throw :exit if condition
end
end
end
你可以也抛出异常,但这看起来很脏。不过,这是执行此操作的代码:
begin
while true
while true
raise "Exiting loops" if condition
end
end
rescue
#Code to go after the loop
end
最后,您可以将整个事物包装在一个方法中并从该方法返回:
def my_descriptive_method_name()
while true
while true
return if condition
end
end
end