Ruby - exit from IF block



在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

相关内容

  • 没有找到相关文章

最新更新