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