【Ruby】nil, empty, blank, presentの違いをサクッと解説 🔰
はじめに
こんにちは、Takeです。都内の自社開発企業でエンジニアとして働いています。
RubyやRailsを使っていると、nil
、empty
、blank
、present
といったメソッドや概念に出会うことがよくあります。
これらの違いを簡潔にまとめてみました。初心者にも分かりやすく解説していきます。
結論
メソッド | 意味 | 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のメソッドでオブジェクトが存在し、かつ空でないことを確認します。
具体的に確認していきましょう。
nil?
1. 意味
nilはRubyにおける「何もない」状態を表します。
オブジェクトが存在しない、または何の値も保持していない状態です。
本当に何も存在しないイメージです。
使用例
変数がnilであるかどうかを確認する場合に使います。
name = nil
puts name.nil? # => true (nameはnilです)
nilはRubyの独自のオブジェクトで変数に値が割り当てられていない場合や、メソッドが明示的に値を返さない場合に使われます。
empty?
2. 意味
empty?は、オブジェクトが「空」であるかを確認するメソッドです。
主に配列や文字列、ハッシュといったコレクションに対して使われます。
使用例
配列や文字列が空(要素がない状態)かどうかを調べるために使います。
name = ""
puts name.empty? # => true (nameは空の文字列です)
array = []
puts array.empty? # => true (arrayは空です)
blank?
3. 意味
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は空白文字列です)
present?
4. 意味
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のメソッドで、オブジェクトが存在し、かつ空でないことを確認します。
参考
最後に
ここまで読んでいただきありがとうございました!
今回の記事が良かったと思ったらぜひ「いいね」を押していただけると嬉しいです 🎉
noteでも記事を執筆していますので、ぜひチェックしてみてください。
他にもこのようなことについて記載しているのでお読みいただければ幸いです。
最後までお読みいただき、誠にありがとうございました!
Discussion