Quantcast
Channel: jun01tの日記
Viewing all articles
Browse latest Browse all 87

Rubyのnil?, blank?, present? の違い

$
0
0

Rubyにおける nil?, blank?, present?の違い

Rubyのコードを書いていると、オブジェクトが「空」であるかどうかを確認するために様々なメソッドを使います。その中でもよく使われるのが nil?, blank?, present?です。これらのメソッドは少し似ていますが、実際には異なる役割を持っています。この記事では、それぞれのメソッドの違いについて詳しく見ていきます。

1. nil?

説明

Rubyの組み込みメソッドで、オブジェクトが nilかどうかを確認するためのメソッドです。nilRubyにおける「何もない」ことを表す唯一のオブジェクトです。

使い方

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?falsetruefalsefalsefalsefalsefalse
blank?truetruetruetruetruefalsefalse
present?falsefalsefalsefalsefalsetruetrue

5. まとめ

  • nil?はオブジェクトが nilかどうかだけを判定します。
  • blank?はオブジェクトが「空」かどうか、つまり nilや空のコレクション、ホワイトスペースのみの文字列などを考慮します。
  • present?blank?の反対で、オブジェクトに「何かが存在する」かどうかを判定します。

状況に応じて、これらのメソッドを使い分けることで、より明確で意図した動作を実現できます。特にRailsアプリケーションでは blank?present?が便利なことが多いので、どんどん活用してみてください!


これでRailsにおける nil?, blank?, present?の違いを理解する助けになれば幸いです。


Viewing all articles
Browse latest Browse all 87

Trending Articles