【Ruby】真偽値判定の考え方

プログラミング

おはようございます、もっちゃんです!

今回はRubyの「真偽値判定」について書いていこうと思います

いわゆる「if文」とかで使う

true or false を判断して結果を返すやつですね!

a || b とか

c && d みたいなやつです!

それでは行きましょう

まず前提として

Rubyは真偽が決定するまで左辺から順番に式を評価していき、真偽が確定するとそのときの値を結果として返します!

どういうことかというと

a && b && c

この場合だと、左辺から順番に判定されて

式の途中では真偽は確定しないため、最後のcを結果として返します

次に

a && nil && b

この場合だと、2番目にnilが出てくるので
その時点で真偽が確定し、nilが結果として返されます!
bは判定されません)

ん?ではなぜ、nilが出てくると真偽値が確定するのでしょうか?

それはRubyの「特殊なルール」的なものがあるからです!

Rubyの真偽判定ルール

次に、Rubyにおける真偽判定のルール的なものですが

false または nilの場合のみ

(ここがクセ、、!)

それ以外(true)の場合は

(これは一般的ですね)

という結果になります、、、

 

ん〜、これは特殊ですしまだイメージが湧かないので、2つのパターンで見てみましょう

真偽値の判定結果

パターン①

a && nil && b

まずは最初にも出てきたこのパターンです!

左辺のaから順番に見ていき、nilがでてきた時点で判定が確定し
結果は「偽」が返されます(if文で言うfalseの判定になる)

パターン②

false || nill || 3 || 5

次のこのパターンですが、左辺から、falsenil、この時点ではまだ「偽」とはならず
次の「3」が出てきた時点で判定が確定して「真」となります!

そう「偽」ではないのです。。

なぜなら比較演算子が || だから!
これは「または」という意味です、英語で表すと「or」のこと

そしてRubyではfalseとnil以外は「真」になるんでしたね!
よって、この式の判定結果は「真」です

まとめ

まとめるほどではないですが

falseかnil以外の場合は0や””も含めて全て「真」

または

falseとnil の場合だけ「偽」

こう覚えておくとわかりやすいでしょう!