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 ::Kernelund außer Kraft gesetzt auf ::NilClass, während :empty?umgesetzt wird separat auf vielen Klassen (nativ auf ::String, ::Array, ::Hashund nicht nativ auf anderen Klassen wie ::Setaus stdlib und ::ActiveRecord::Relationvon Schienen). Ist :nil?also in allen Unterklassen von ::Objectund auch in jeder Klasse verfügbar , die ::Kernelfür sich selbst enthält, wo :empty?sie implementiert oder speziell in Ihre Klassen aufgenommen werden muss.
nilKonzept zu verstehen, beginnen Sie hier .
[1] pry(main)> [].blank? => true



present?. Dies liegt daranblank?, dass für ein leeres Array true zurückgegeben wird.