在IF块中,我需要检查某些条件是否为真,如果为真,则退出块
#something like this
if 1 == 1
return if some_object && some_object.property
puts 'hello'
end
我该怎么做呢?
你不可能像那样脱离if
。你能做的就是给它加一个子句:
if (cond1)
unless (cond2)
# ...
end
end
如果你的逻辑过于嵌套,你需要一种更好的方法来平面化它,也许你想做的是事先计算一个变量,然后只在需要的时候才开始:
will_do_stuff = cond1
will_do_stuff &&= !(some_object && some_object.property)
if (will_do_stuff)
# ...
end
有许多方法可以避免使用深度嵌套结构,而不必对其进行break
。
在选择与事物相关的词语时要小心。因为Ruby有块,所以我不确定您是否认为条件语句是块。例如,您不能执行以下操作:
# will NOT work:
block = Proc.new { puts "Hello, world." }
if true then block
如果你需要有一个嵌套的条件,你可以这样做,而不会使事情复杂化:
if condition_one?
if condition_two?
# do some stuff
end
else
# do something else
end
代替if
,您可以使用从未真正循环的while
循环,并在适合您需要的地方放置中断。
while some·condition
something·likely
break unless some·additional·condition
something·less·likely
break
end