以下の内容はhttps://kamatimaru.hatenablog.com/entry/2026/01/12/003726より取得しました。


RubyでAND条件とOR条件にand,orではなく&&,||を使う理由

Rubyでは基本的にAND条件とOR条件に&&||を使います。

他方でandorも構文ではサポートされています。従って、Python経験がある身としては、andorを使いそうになってしまうときがあります。

PythonではAND条件とOR条件にはandorを使う

note.nkmk.me

しかし、一般的なRubyのコードでandorを使っているケースはほとんど見ません。Rubocopの標準にもandorの使用をチェックするルールが存在します。

www.rubydoc.info

従って、なぜ原則は&&||を使ったほうがよいのかを確認したいと思います。

理由

&&||andorはそれぞれ演算子の評価の優先順位が異なり、andorは直観に反する挙動をする場合があるからです。

演算子の評価の優先順位は公式ドキュメントに明記されています。

docs.ruby-lang.org

andorは「低い」に分類されています。

挙動が変わる代表的な例としてAIが挙げたのは以下でした。

a = true && false # aには`false`が代入される
b = true and false # bには`true`が代入される

1個目は&&の方が=よりも優先的に評価されるため、aにはtrue && falseの評価結果であるfalseが代入されます。

これは直観的な挙動です。

他方で2個目は、=の方がandよりも優先的に評価されるため、先にb = trueが実行されます。次にb(true) && falseが実行されます。評価結果自体はfalseですが、この結果は捨てられるので、変数bの値は意図とは異なりtrueになってしまいます。

このようなバグのリスクがあるので、原則は&&||を使うようです。




以上の内容はhttps://kamatimaru.hatenablog.com/entry/2026/01/12/003726より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14