nil? empty? blank? present? メソッドの違い
nil? empty? blank? present? メソッドの違い
board.nil?
boardがnilならtrueを返す。
nil.nil? # true false.nil? # false "".nil? # false [].nil? # false {}.nil? # false 0.nil? # false
empty?
rubyのメソッド
board.empty?
boardが空の時にtrueを返す。 [empty?]は、文字列、配列、ハッシュなどのオブジェクトが空だとtrueを返す。
"".empty? # true " ".empty? # false [].empty? # true {}.empty? # true
以下のような場合は、例外が発生する。
nil.empty? false.empty? 0.empty?
blank?
railsで拡張されたメソッド(rubyでは使えない)
board.blank?
boardがnilの場合も空の場合もtrueを返す。(nil?とempty?を合わせたようなイメージ)
nil.blank? # true false.blank? # true "".blank? # true " ".blank? # true [].blank? # true {}.blank? # true 0.blank? # false
present?
railsで拡張されたメソッド(rubyでは使えない)
board.present?
boardが存在している時にtrueを返す。 [blank?] メソッドと真偽値が逆になる。
nil.present? # false false.present? # false "".present? # false " ".present? # false [].present? # false {}.present? # false 0.present? # true
※まとめ
イメージは以下のようになる。
・nil?:存在自体しない透明のようなものに対して、trueを返すイメージ。
・empty?:存在はするが中身が空のものに対して、 trueを返すイメージ。(" "のようなものは、半角スペースが存在しているのでfalseを返す。)
・blank?:nilか存在するけど中身が空か存在するけど中身にスペースのようなものしかない場合にtrueを返す。
・present?:[blank?]メソッドと逆の真偽値を返す。(中身がスペースとかだけじゃなく、ちゃんと存在しているかを判定するようなイメージ。)
参考記事:
nil? empty? blank? present? の使い分け - Qiita