PHP4年生からRubyを学び始めた初心者です。
PHPと似ているところがあるよ〜ってインターネットで見たので学んでみるか(^o^)
という安易な気持ちで学び始めたが、なんかちょこちょこ違うぞ...となっている。
今回はnilについて学んだのでメモとしてアウトプット。
結論
nullと同じか?と思って調べてみた
ほぼ同じっぽい。
でも、nilはNilClassというクラスのオブジェクトらしい。
Rubyではすべての値をオブジェクトとしているからnilもオブジェクトになる。
オブジェクトが所属しているクラスのメソッドでnil判定ができる。
判定できるメソッドについて
nil?
対象のオブジェクトがnil
だったらtrueを返す。
それ以外であればfalseを返す。
empty?
対象のオブジェクトが空文字と空配列の時にtrueを返す。
値が存在している場合はfalseを返す。
また、nilで使用するとエラーが発生する。(NoMethodError)
nil.empty? => undefined method `empty?' for nil:NilClass
NilClassにはないメソッドだから判定できないっすってことですね。
blank?
対象のオブジェクトがnil
、空文字、空配列、半角スペース''
の時に
trueを返す。
値が存在している場合はfalseを返す。
結構、判定が甘いというか対象の範囲が広い気がする。
上記のコメント参照させてもらう。
blank? は空白文字からなる文字列でも true を返します。
"\x20\t\r\n\u00A0\u2002\u3000".blank? # => true
空白文字でもtrueになるっぽい。
present?
対象のオブジェクトが存在しているかどうかで使用するメソッド。
blank?
の逆の判定を行う。
対象のオブジェクトが存在している場合にtrueを返す。
対象のオブジェクトがnil
、空文字、空配列、半角スペース''
の時にfalseを返す。
参考