あるインタビューで、
「 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