nil? empty? blank? present? メソッドの違い

nil? empty? blank? present? メソッドの違い


nil?
rubyのメソッド

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

Rails の nil?, empty?, blank? の違い - yu8mada

nil?, empty?とblank?の違い-Ruby on Rails-[和訳] - bryankawaの日記