そして、あなたは、 見過ごされずに、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