Ich finde ich immer wieder für eine klare Definition der Unterschiede zu suchen nil?
, blank?
und empty?
in Ruby on Rails. Hier ist der nächste, den ich gekommen bin:
blank?
Objekte sind falsch, leer oder eine Leerzeichenfolge. Zum Beispiel""
," "
,nil
,[]
, und{}
sind leer.nil?
Objekte sind Instanzen von NilClass.empty?
Objekte sind klassenspezifisch und die Definition variiert von Klasse zu Klasse. Eine Zeichenfolge ist leer, wenn sie keine Zeichen enthält, und ein Array ist leer, wenn sie keine Elemente enthält.
Fehlt etwas oder kann ein genauerer Vergleich durchgeführt werden?
:nil?
ist definiert auf ::Kernel
und außer Kraft gesetzt auf ::NilClass
, während :empty?
umgesetzt wird separat auf vielen Klassen (nativ auf ::String
, ::Array
, ::Hash
und nicht nativ auf anderen Klassen wie ::Set
aus stdlib und ::ActiveRecord::Relation
von Schienen). Ist :nil?
also in allen Unterklassen von ::Object
und auch in jeder Klasse verfügbar , die ::Kernel
für sich selbst enthält, wo :empty?
sie implementiert oder speziell in Ihre Klassen aufgenommen werden muss.
nil
Konzept zu verstehen, beginnen Sie hier .
[1] pry(main)> [].blank? => true
present?
. Dies liegt daranblank?
, dass für ein leeres Array true zurückgegeben wird.