nil || falsefalseを返しfalse || nilますnil。誰かがこれについての説明がありますか?
3 に答える
Rubyでは、すべてが式であり、式はその中で評価された最後の値を返します。
どちらの例でも、式の左側||は偽の値に評価されるため、Rubyは右側を評価して返します。
他の人が指摘したように、||最初に左側の式を評価します。「true」(falseまたはを除くnil)の場合は、それを返します。それ以外の場合は、右側の式を評価し、それを返します(それが何であっても)。
これは||、ブールテストだけでなく多くの場合に役立ちます。たとえば、先日、chronicgemのコードを作成するときに使用しました。
@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なることはないことがわかっている場合にのみ機能します!)falsenil
&&また、「ガード」と同じ行に「ガード」式を絞り込むために使用することもできます。
message && send_message(message)
置き換えることができます:
unless message.nil?
send_message(message)
end
||最後に評価された式の結果を返します。trueLHSを評価して値を見つけた場合、LHSを取得します。それ以外の場合は、RHSを取得します(そのRHSが何であっても)。