私は自分自身が繰り返しの違いの明確な定義を探して見つけnil?
、blank?
およびempty?
Ruby on Railsの中で。これが私が来た最も近いものです:
blank?
オブジェクトはfalse、空、または空白文字列です。たとえば、""
、" "
、nil
、[]
、および{}
空白です。nil?
オブジェクトはNilClassのインスタンスです。empty?
オブジェクトはクラス固有であり、定義はクラスごとに異なります。文字がない場合、文字列は空になり、項目が含まれない場合、配列は空になります。
不足しているもの、またはより厳密な比較ができるものはありますか?
:nil?
上に定義された::Kernel
とのオーバーライドされ::NilClass
ながら、:empty?
多くのクラスに分けて実装されている(ネイティブの::String
、::Array
、::Hash
、および非ネイティブのような他のクラスの::Set
STDLIBからと::ActiveRecord::Relation
レールから)。したがって、:nil?
は、のすべてのサブクラス、::Object
および::Kernel
それ自体が含まれるすべてのクラスで使用でき:empty?
ます。これらのクラスは、クラスに具体的に実装または含める必要があります。
nil
概念を理解しようとするなら、ここから始めてください。
[1] pry(main)> [].blank? => true
present?
。これはblank?
、空の配列に対してtrueを返すためです。