🍎
【Ruby】「&&」と「| |」の評価方法の違い
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"]
参考
Discussion