true,falseについて
Rubyがtrueを返すものか、falseを返すものかをまとめました。
true ... 条件式が正立するとき。[真]つまりfalse, nil の時以外全て
false ... 条件式が成立しないとき[偽]。つまりfalse, nil の時
if文などで真偽値(true/false)を求める際、比較演算子が重要になってくる。
== | a = b | aとbが等しい |
---|---|---|
!= | a != b | aとbが等しくない |
> | a > b | aはbより大きい |
>= | a >= b | aはb以上 |
< | a < b | aはbより小さい |
<= | a <= b | aはb以下 |
存在しないキーを指定する
存在しないキーを指定した際nilが表示されます。(このときのnilはfalseではない)
user={name:"rika",age:26}
puts user[:height] #=>nil
if文で存在しないキーを指定した際nilが表示されます。(このときのnilはfalseです。なぜなら条件式がなり立たなかったから)
ハッシュに[:height]があったら”へー” 、なかったら”ほー” と返すように指示するように書きました。
このときハッシュに[:height]は存在しておらず条件式が成り立たない。
user = {name:"rika",age:26}
if user[:height]
puts "へー" #=>nil
else
puts "ほー"
end
実行結果↓
$ ruby sample.rb
ほー
補足:to_iメソッドとto_sメソッドについて
to_iメソッドは文字を数値に変換するもの、to_sメソッドは数値を文字に変換するもの
<to_iメソッドを用いる例>
1=="1"
=>false
これは数値の1と文字列の1なので等しくない。
ですが
1=="1".to_i
=>true
これはto_iメソッドを用いると数値の1と文字列の1で等しくなる。
(to_sメソッドも同じ考え方です)
これらをふまえて
文字列や数値に変換しなければ最初に記載した通りにRubyがtrue,falseを返すが、変換できるものもある
~nilの場合~ nilは数値にも文字列にもなれる
nil.to_iは0になるのでtrue
nil.to_sは" "になるのでtrue
~true,falseの場合~ true,falseは文字列にだけなれる
true.to_iは数値に変換できずエラーが起こるのでfalse
true.to_sは"true"になるのでtrue