😸
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