オブジェクト存在チェックメソッド5つの違いを徹底解説
この記事では、.nil?
, .empty?
, .blank?
, .present
, そして .presence
のそれぞれの使い方と違いについて説明していきます。
1. .nil?
.nil?
メソッドは、オブジェクトが nil
かどうかを判定します。nil
であれば true
を返し、それ以外の場合は false
を返します。つまり、オブジェクトが何も参照していないかどうかを確認するためのメソッドです。
value = nil
value.nil? # => true
number = 10
number.nil? # => false
2. .empty?
.empty?
は、オブジェクトが空であるかを判定するためのメソッドです。例えば、文字列の場合、中身が空であれば true
を返します。
empty_string = ""
empty_string.empty? # => true
full_string = "Hello!"
full_string.empty? # => false
3. .blank?
.blank?
は、オブジェクトが「何もない」状態を判定します。nil?
が true
であるか、または .empty?
が true
である場合、.blank?
は true
を返します。
empty_string = ""
empty_string.blank? # => true
nil_value = nil
nil_value.blank? # => true
non_empty_string = "Hello!"
non_empty_string.blank? # => false
4. .present
.present
は .blank?
の逆です。オブジェクトが空でないかを確認します。.blank?
が true
の場合、.present
は false
を返し、その逆も同様です。
empty_string = ""
empty_string.present? # => false
non_empty_string = "Hello!"
non_empty_string.present? # => true
5. .presence
.presence
は、値が存在する場合はその値自身を、存在しない場合は nil
を返します。主に nil
を排除する際に使用されます。
empty_string = ""
empty_string.presence # => nil
non_empty_string = "Hello!"
non_empty_string.presence # => "Hello!"
これらのメソッドを使いこなすことで、プログラムをより効率的に記述できます。各メソッドの特性を把握することで、データの有無や空状態を正確に判断し、適切な処理を行うことができます。