💎

【Ruby】nil, empty, blank, presentの違いをサクッと解説 🔰

2024/10/02に公開

はじめに

こんにちは、Takeです。都内の自社開発企業でエンジニアとして働いています。

RubyやRailsを使っていると、nilemptyblankpresentといったメソッドや概念に出会うことがよくあります。

これらの違いを簡潔にまとめてみました。初心者にも分かりやすく解説していきます。

結論

メソッド 意味 nil 空文字 ("") 空白文字 (" ") データが入っている場合 ("Sample")
nil? オブジェクトがnilか確認 true false false false
empty? オブジェクトが空か確認 N/A true false false
blank? nilまたは空・空白か確認 true true true false
present? オブジェクトが存在し、空でない false false false true
  • nil?: オブジェクトがnilであるかを確認します。
  • empty?: 配列や文字列などが「空」であるかを確認します。
  • blank?: Railsのメソッドでnilまたは空、空白だけかを確認します。
  • present?: Railsのメソッドでオブジェクトが存在し、かつ空でないことを確認します。

具体的に確認していきましょう。

1. nil?

意味

nilはRubyにおける「何もない」状態を表します。
オブジェクトが存在しない、または何の値も保持していない状態です。

本当に何も存在しないイメージです。

使用例

変数がnilであるかどうかを確認する場合に使います。

name = nil
puts name.nil?  # => true (nameはnilです)

nilはRubyの独自のオブジェクトで変数に値が割り当てられていない場合や、メソッドが明示的に値を返さない場合に使われます。

2. empty?

意味

empty?は、オブジェクトが「空」であるかを確認するメソッドです。
主に配列や文字列、ハッシュといったコレクションに対して使われます。

使用例

配列や文字列が空(要素がない状態)かどうかを調べるために使います。

name = ""
puts name.empty?  # => true (nameは空の文字列です)

array = []
puts array.empty?  # => true (arrayは空です)

3. blank?

意味

empty?は、オブジェクトが「空」であるかを確認するメソッドです。
主に配列や文字列、ハッシュといったコレクションに対して使われます。

使用例

blank?はRailsが提供するメソッドで、「空白である」または「nilである」状態を確認します。
blank?は空の文字列や空白だけの文字列にもtrueを返します。

name = nil
puts name.blank?  # => true (nameはnilです)

name = ""
puts name.blank?  # => true (nameは空の文字列です)

name = "   "
puts name.blank?  # => true (nameは空白文字列です)

4. present?

意味

present?もRailsが提供するメソッドで、blank?の逆を行います。
つまり、オブジェクトが存在し、かつ空でない場合にtrueを返します。

使用例

データが存在して有効な値を持っているかを確認したい場合に使います。

name = "Sample"
puts name.present?  # => true (nameには値が入っています)

name = ""
puts name.present?  # => false (nameは空です)

name = nil
puts name.present?  # => false (nameはnilです)

改めて比較表

メソッド 意味 nil 空文字 ("") 空白文字 (" ") データが入っている場合 ("Sample")
nil? オブジェクトがnilか確認 true false false false
empty? オブジェクトが空か確認 N/A true false false
blank? nilまたは空・空白か確認 true true true false
present? オブジェクトが存在し、空でない false false false true

まとめ

  • nil?: オブジェクトがnilであるかを確認します。
  • empty?: 配列や文字列などが「空」であるかを確認します。
  • blank?: Railsのメソッドで、nilまたは空、空白だけかを確認します。
  • present?: Railsのメソッドで、オブジェクトが存在し、かつ空でないことを確認します。

参考

https://railsdoc.com/active_support

https://railsguides.jp/active_support_core_extensions.html

https://qiita.com/somewhatgood@github/items/b74107480ee3821784e6

最後に

ここまで読んでいただきありがとうございました!
今回の記事が良かったと思ったらぜひ「いいね」を押していただけると嬉しいです 🎉

noteでも記事を執筆していますので、ぜひチェックしてみてください。
https://note.com/take_lifelog/n/n58df7ce7af6f

他にもこのようなことについて記載しているのでお読みいただければ幸いです。

https://zenn.dev/take_tech/articles/275e5f4242973d

https://zenn.dev/take_tech/articles/374817f256ec9d

最後までお読みいただき、誠にありがとうございました!

Discussion