Ruby - 退出IF块

Vla*_*nov 13 ruby if-statement exit

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

#something like this
if 1 == 1
  return if some_object && some_object.property
  puts 'hello'
end
Run Code Online (Sandbox Code Playgroud)

我该怎么做?

tad*_*man 16

你不能打破if这样的.你可以做的是为它添加一个子句:

if (cond1)
  unless (cond2)
    # ...
  end
end
Run Code Online (Sandbox Code Playgroud)

如果你的逻辑太嵌套而且你需要一种方法来更好地压扁它,你可能想要做的就是事先计算一个变量,然后只有在需要时才潜入:

will_do_stuff = cond1
will_do_stuff &&= !(some_object && some_object.property)

if (will_do_stuff)
  # ...
end
Run Code Online (Sandbox Code Playgroud)

有许多方法可以避免使用深层嵌套的结构而不必使用break它.

  • `&& =`是二进制 - 相当于`|| =`,所以`a && = b`与`a && a = b`相同.因此,如果`a`是真实的,那么`b`的值被分配给`a`. (4认同)
  • +1用于预先计算变量,它给出了条件的名称.一个好名字将极大地提高可读性. (3认同)