Rubyにおける nil?
, blank?
, present?
の違い
Rubyのコードを書いていると、オブジェクトが「空」であるかどうかを確認するために様々なメソッドを使います。その中でもよく使われるのが nil?
, blank?
, present?
です。これらのメソッドは少し似ていますが、実際には異なる役割を持っています。この記事では、それぞれのメソッドの違いについて詳しく見ていきます。
1. nil?
説明
Rubyの組み込みメソッドで、オブジェクトが nil
かどうかを確認するためのメソッドです。nil
はRubyにおける「何もない」ことを表す唯一のオブジェクトです。
使い方
variable.nil?
動作
- オブジェクトが
nil
の場合にtrue
を返し、それ以外のすべてのオブジェクトに対してfalse
を返します。 - 空の文字列 (
""
) や空の配列 ([]
) はnil
ではないため、false
が返ります。
例
nil.nil? # => true123.nil? # => false"".nil? # => false [].nil? # => false
2. blank?
説明
Rubyが提供するメソッドで、オブジェクトが「空」かどうかを確認するために使用します。「空」とは、nil
または中身が空であることを意味します。
使い方
variable.blank?
動作
nil
,false
, 空の文字列 (""
), 空の配列 ([]
), 空のハッシュ ({}
), ホワイトスペースのみの文字列などに対してtrue
を返します。- 中身があるオブジェクトに対しては
false
を返します。
例
nil.blank? # => truefalse.blank? # => true"".blank? # => true"".blank? # => true # スペースのみの文字列も空とみなされる [].blank? # => true {}.blank? # => true123.blank? # => false"abc".blank? # => false
3. present?
説明
present?
は blank?
の反対です。つまり、オブジェクトが「空ではない」場合に true
を返します。
使い方
variable.present?
動作
blank?
の逆で、オブジェクトがnil
,false
, 空の文字列 (""
), 空の配列 ([]
), 空のハッシュ ({}
), ホワイトスペースのみの文字列などの場合にfalse
を返します。- 中身があるオブジェクトに対しては
true
を返します。
例
nil.present? # => falsefalse.present? # => false"".present? # => false"".present? # => false [].present? # => false {}.present? # => false123.present? # => true"abc".present? # => true
4. 比較まとめ
メソッド | 空の文字列 "" | nil | 空の配列 [] | 空のハッシュ {} | false | "abc" | 123 |
---|---|---|---|---|---|---|---|
nil? | false | true | false | false | false | false | false |
blank? | true | true | true | true | true | false | false |
present? | false | false | false | false | false | true | true |
5. まとめ
nil?
はオブジェクトがnil
かどうかだけを判定します。blank?
はオブジェクトが「空」かどうか、つまりnil
や空のコレクション、ホワイトスペースのみの文字列などを考慮します。present?
はblank?
の反対で、オブジェクトに「何かが存在する」かどうかを判定します。
状況に応じて、これらのメソッドを使い分けることで、より明確で意図した動作を実現できます。特にRailsアプリケーションでは blank?
や present?
が便利なことが多いので、どんどん活用してみてください!
これでRailsにおける nil?
, blank?
, present?
の違いを理解する助けになれば幸いです。