【Ruby】「&&」と「| |」の評価方法の違い

3468 ワード

Rubyの原点回帰をしていた時に、&&と||の評価方法がややこしかったので、評価方法の違いを備忘録として書きました。

&&(and)

A && B
AかつBが真のとき真、それ以外は偽

左辺が「真」なら → 右辺を評価し、右辺の結果を返す
左辺が「偽」なら → その時点で左辺の結果を返す(右辺をみない)

||(or)

A || B
AまたはBが真のとき真、どちらも偽のとき偽

左辺が「真」なら → その時点で左辺の結果を返す(右辺をみない)
左辺が「偽」なら → 右辺を評価し、右辺の結果を返す

a = []

# 左辺が「真」のときは、右辺を評価しその結果を返す
a << "apple" && false
=> false

# 左辺が「偽」のときは、左辺の結果を返す(右辺をみない)
false && a << "orange"
=> false

# 左辺が「真」のときは、左辺の結果を返す(右辺をみない)
true || a << "lemon"
=> true

# 左辺が「偽」のときは、右辺を評価しその結果を返す
false || a << "banana"
=> ["apple", "banana"]

p a
=> ["apple", "banana"]

参考