Rubyの「&&」および「and」演算子

あるインタビューで、 Rubyで書くとき、論理演算子「And」を表すために「and」演算子または2つのアンパサンド文字「&&」を使用しますか?」 実際、昔の習慣では、私は常に2つのアンパサンド文字「&&」を使用し 、それについては考えませんでした。 そこで彼は答え、彼らは私に「良い」と言った。



そして、あなたは、 見過ごされずに、Rubyの「and」「&&」の違いを明確に説明できますか?





次のコードがあるとしましょう。

total = user_messages.empty? and user_messages.total









そして、 合計の値は何ですか? ユーザーの投稿数は? いや! 問題は、インタープリターが次のようにそれを読み取ることです。

(total = user_messages.empty?) and user_messages.total











したがって、 合計trueまたはfalseになります 。 これはあなたが望んでいたものではありません! なぜこれが起こっているのですか? Rubyには演算子の優先順位テーブルがあるからです。 これを研究した結果、 &&演算子を使用できることがわかりました。

コードの次の2行はまったく同じです。



total = user_messages.empty? && user_messages.total

total = (user_messages.empty? && user_messages.total)











演算子orおよび||を使用した同様のストーリー 。

コードを見てください...



PSそして、これは最終的な理解(または誤解)のための別の例です

irb(main):001:0> x=1

=> 1

irb(main):002:0> y=2

=> 2

irb(main):003:0> x || y && nil

=> 1

irb(main):004:0> x or y and nil

=> nil










All Articles