😸

Ruby ANDとOR演算子 優先順位の違い

に公開

Rubyで使われるAND(&&)演算子と、OR演算子(or)の優先順位を復習した。
結論、Rubyでは、&&のほうがorよりも優先して評価される。
コードをもとに具体例を見ていく。

> a, b, c = true, true, false

まずはこちらの例。

> a or b
=> true
  • aがまず先に評価される
  • atrueなのでbの値を評価せずtrueを返す
> a or b && c
=> true
  • or演算子よりも&&演算子の優先度が高いため、b && cが先に評価される。論理積(AND)の場合、両方の条件がtrueでないと全体の結果もtrueにならない。この場合、bがtrueであってもcfalseなので全体としてはfalseになる
  • しかし、atrueなのでb && cの全体の評価結果を見る前にtrueを返す
> (a or b) && c
=> false
  • (a or b)が先に評価され、trueを返す
  • true && cということになり、論理積なのでどちらかがfalseの場合はfalseになる。cfalseなので全体の式の評価はfalseとなる

Discussion