Ruby: and と &&, & , or と ||, | の違い


Ruby では and&&& が使えます。 同様に or||| が使えます。 これらの違いについて調べてみました。

環境

  • Ruby 2.4.0

and, &, &&論理積を、 or, ||, |論理和を期待通り計算してくれます。

違い

注意すべき違いは、演算子の優先順位と、右側の評価です。

優先順位

演算子の優先順位は次のようになっています。

  • &
  • |, ^
  • >, >=, <, <=
  • ==, !=
  • &&
  • ||
  • .., ...
  • ?:
  • =
  • not
  • and, or

ここからわかるように、下のような演算結果になります。

& は上の例ではビット演算となっていますが、 bool値同士の演算もできます。

右側評価

演算子の右側を評価するか否かが違います。 これは優先順位によるものでもあるのですが。

and, && の場合は左側が false の場合右側を評価しないようになっています。 VisualBasic でいう AndAlso のような挙動です。