😸
Ruby ANDとOR演算子 優先順位の違い
Rubyで使われるAND(&&
)演算子と、OR演算子(or
)の優先順位を復習した。
結論、Rubyでは、&&
のほうがor
よりも優先して評価される。
コードをもとに具体例を見ていく。
> a, b, c = true, true, false
まずはこちらの例。
> a or b
=> true
-
a
がまず先に評価される -
a
はtrue
なのでbの値を評価せずtrue
を返す
> a or b && c
=> true
-
or
演算子よりも&&
演算子の優先度が高いため、b && c
が先に評価される。論理積(AND)の場合、両方の条件がtrue
でないと全体の結果もtrue
にならない。この場合、b
がtrueであってもc
がfalse
なので全体としてはfalse
になる - しかし、
a
がtrue
なのでb && c
の全体の評価結果を見る前にtrue
を返す
> (a or b) && c
=> false
-
(a or b)
が先に評価され、true
を返す -
true && c
ということになり、論理積なのでどちらかがfalse
の場合はfalse
になる。c
がfalse
なので全体の式の評価はfalse
となる
Discussion