Ruby - 从IF块退出

时间:2011-10-19 16:59:57

标签: ruby if-statement exit

在IF块中,我需要检查某些条件是否为真,如果是,则退出块。

#something like this
if 1 == 1
  return if some_object && some_object.property
  puts 'hello'
end

我该怎么做?

2 个答案:

答案 0 :(得分:15)

你无法突破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

答案 1 :(得分:2)

谨慎选择与事物相关的词语。因为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