LoginSignup
2
1

More than 5 years have passed since last update.

Rubyのtrueとfalseまとめ

Last updated at Posted at 2018-07-13

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ではない)

qiita.rb

user={name:"rika",age:26}
puts user[:height]  #=>nil

if文で存在しないキーを指定した際nilが表示されます。(このときのnilはfalseです。なぜなら条件式がなり立たなかったから)
ハッシュに[:height]があったら”へー” 、なかったら”ほー” と返すように指示するように書きました。
このときハッシュに[:height]は存在しておらず条件式が成り立たない。

qiita.rb

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

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1