Table of Contents
Ruby では and
と &
、 &&
が使えます。 同様に or
と |
、||
が使えます。 これらの違いについて調べてみました。
環境
- Ruby 2.4.0
and
, &
, &&
は論理積を、 or
, ||
, |
は論理和を期待通り計算してくれます。
違い
注意すべき違いは、演算子の優先順位と、右側の評価です。
優先順位
演算子の優先順位は次のようになっています。
&
|
,^
>
,>=
,<
,<=
==
,!=
&&
||
..
,...
?:
=
not
and
,or
ここからわかるように、下のような演算結果になります。
&
は上の例ではビット演算となっていますが、 bool値同士の演算もできます。
右側評価
演算子の右側を評価するか否かが違います。 これは優先順位によるものでもあるのですが。
and
, &&
の場合は左側が false
の場合右側を評価しないようになっています。 VisualBasic でいう AndAlso
のような挙動です。