||
演算子の使用とrescue
Ruby での使用に違いはありますか?
言う:
b = A.value || "5"
b = A.value rescue 5
オブジェクトにはメソッドA
がありませんvalue
。
||
演算子の使用とrescue
Ruby での使用に違いはありますか?
言う:
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
等しいことです。言い換えれば、インラインは下品なハックであり、本番コードで頻繁に使用するべきではありません。代わりに身なりのよいステートメントを使用してください。StandardError
rescue
begin ... rescue ... else ... ensure ... end