我正在寻找一个跳过when块执行的语句,类似于breakfor循环.这可能吗?
我想要避免的是一个类似的结构:
case n
when 1
if valid
foo.bar
end
when 2
if valid
foo.foo
end
Run Code Online (Sandbox Code Playgroud)
更理想的代码块看起来像:
case n
when 1
break unless valid
foo.bar
when 2
break unless valid
foo.foo
end
Run Code Online (Sandbox Code Playgroud)
显然,break不起作用.
等效但更简洁:
case n
when 1
foo.bar if valid
when 2
foo.foo if valid
end
end
Run Code Online (Sandbox Code Playgroud)
如果条件确实适用于所有情况,您可以事先检查:
if valid
case n
when 1
foo.bar
when 2
foo.foo
end
end
end
Run Code Online (Sandbox Code Playgroud)
如果两者都不适合你,那么简短回答:不,break在ruby的案例陈述中没有等价物.