おはようございます、もっちゃんです!
今回は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
次のこのパターンですが、左辺から、false、nil、この時点ではまだ「偽」とはならず
次の「3」が出てきた時点で判定が確定して「真」となります!
そう「偽」ではないのです。。
なぜなら比較演算子が || だから!
これは「または」という意味です、英語で表すと「or」のこと
そしてRubyではfalseとnil以外は「真」になるんでしたね!
よって、この式の判定結果は「真」です
まとめ
まとめるほどではないですが
falseかnil以外の場合は0や””も含めて全て「真」
または
falseとnil の場合だけ「偽」
こう覚えておくとわかりやすいでしょう!