「または」と「かつ」についての、式の評価結果の違いについて

Ruby

 

ポイント
式全体における真偽値の評価は、左から順に評価していって、値が確定したところで終わります。

 

Image from Gyazo

 

画像の下2つをごらんください。

「かつ(&&)」の場合、一番左がnilであり、この時点で式全体がnilであることが確定します。よって、戻り値がnilとなります。

 

「または(||)」の場合、一番左がnilでも、残りの評価していない式にまだなんらかの値がある可能性があります。よって、ひとまずnilとfalseが評価されてもそのまま評価をします。

そして、最初に出てきた値が1です。このとき、値は確定し、1が戻り値となっています。

 

では、nilとfalseしかない場合はどんな戻り値なのか。
これも、冒頭で書いた評価の原則にもとづいています。

冒頭画像の上2つをごらんください。

 

nil || falseの場合、nilが評価されていったん保留。つぎにfalseが評価されます。そして、つぎに評価される値がなにもありませんので、最後に評価されたfalseが戻り値となります。

 

false || nilも同様です。

 

今回用いた本