nil || false
false
を返しfalse || nil
ますnil
。誰かがこれについての説明がありますか?
3 に答える
Rubyでは、すべてが式であり、式はその中で評価された最後の値を返します。
どちらの例でも、式の左側||
は偽の値に評価されるため、Rubyは右側を評価して返します。
他の人が指摘したように、||
最初に左側の式を評価します。「true」(false
またはを除くnil
)の場合は、それを返します。それ以外の場合は、右側の式を評価し、それを返します(それが何であっても)。
これは||
、ブールテストだけでなく多くの場合に役立ちます。たとえば、先日、chronic
gemのコードを作成するときに使用しました。
@now = options[:now] || Chronic.time_class.now
つまり、「options
ハッシュに:now
値が含まれている場合は、それをに格納し@now
ます。それ以外の場合は、デフォルトとしてフォールバックしChronic.time_class.now
ます」。あなたはあなた自身のプログラムで多くの可能なアプリケーションを考えることができると確信しています。
&&
類似しています。最初に左側の式を評価し、false
またはに評価するとnil
、それを返します。それ以外の場合は、右側の式を評価し、それを返します(それが何であっても)。
これは、ブールテストだけでなく多くの場合にも役立つことを意味&&
します。これを使用して、2行のコードを1つにまとめることができます。例えば:
do_something && do_something_else
(これは、の戻り値がまたはにdo_something
なることはないことがわかっている場合にのみ機能します!)false
nil
&&
また、「ガード」と同じ行に「ガード」式を絞り込むために使用することもできます。
message && send_message(message)
置き換えることができます:
unless message.nil?
send_message(message)
end
||
最後に評価された式の結果を返します。true
LHSを評価して値を見つけた場合、LHSを取得します。それ以外の場合は、RHSを取得します(そのRHSが何であっても)。