如何在案例中“突破”……在Ruby中
所以,我试过break
,然后return
。 他们都会出错, exit
当然有效,但完全退出。 那么,如何“结束一个case...when
”太快了?“
例:
case x when y; begin if something end end
(以上是某种forms的伪代码,只是为了给出我所要求的一般概念[开始...结束时使用希望break
可行]。
而且,虽然我在这里,是否有更优雅的方式将块传递到case...when
?
出了什么问题:
case x when y;
if !something
end end
请注意, if !something
是相同的, unless something
我看到了几种可能的解决方案。 第一手,您可以在某个方法中定义指令块:
def test_method
return if something
end case x when y test_method end
另一方面,你可以使用catch-throw
,但我相信它更丑陋和非ruby的方式:)
catch :exit do case x when y begin
throw :exit if something
end end end
这是一个类似于WarHog给出的技术的答案:
case x when y begin
break if something
end while false end
或者如果您愿意:
case x when y 1.times do
break if something
end end