||演算子の使用とrescueRuby での使用に違いはありますか?
言う:
b = A.value || "5"
b = A.value rescue 5
オブジェクトにはメソッドAがありませんvalue。
||演算子の使用とrescueRuby での使用に違いはありますか?
言う:
b = A.value || "5"
b = A.value rescue 5
オブジェクトにはメソッドAがありませんvalue。
||ブール値または演算子です (Ruby では、値のみがブール値のコンテキストで false に評価されることに注意してください) nil:false
nil || 5
# => 5
false || 5
# => 5
4 || 5
# => 4
rescue例外キャッチ用です:
fail 'bang' rescue 5
# => 5
'bang' rescue 5
# => "bang"
nil rescue 5
# => nil
あなたの例では、にA応答しないことを考えるとvalue:
A.value
# NoMethodError: undefined method `value' ...
b = A.value || 5
# NoMethodError: ...
b
# => nil
b = A.value rescue 5
b
# => 5
A.value今、それが返すと仮定しますnil:
A.value
# => nil
b = A.value || 5
b
# => 5
b = A.value rescue 5
b
# => nil
他の人がすでにあなたに言ったこととは別に、もう 1 つの違いは、それが正直な||オペレーターであるのに対し、インラインは救助にrescue等しいことです。言い換えれば、インラインは下品なハックであり、本番コードで頻繁に使用するべきではありません。代わりに身なりのよいステートメントを使用してください。StandardErrorrescuebegin ... rescue ... else ... ensure ... end