Ruby -退出IF块

ndh0cuux  于 2023-08-04  发布在  Ruby
关注(0)|答案(3)|浏览(76)

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

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

字符串
我该怎么办?

q9yhzks0

q9yhzks01#

你不可能像那样从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它。

0s0u357o

0s0u357o2#

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

zvokhttg

zvokhttg3#

你可以使用一个while循环,而不是if循环,并在任何适合你需要的地方放置断点。

while some·condition
  something·likely
  break unless some·additional·condition
  something·less·likely
  break
end

字符串

相关问题