Znalazłem się wielokrotnie szuka jasnego zdefiniowania różnic nil?
, blank?
oraz empty?
w Ruby on Rails. Oto najbliższy, jaki przyszedłem:
blank?
obiekty są fałszywe, puste lub zawierają spacje. Na przykład""
," "
,nil
,[]
, i{}
są puste.nil?
obiekty są instancjami NilClass.empty?
obiekty są specyficzne dla klasy, a definicja różni się w zależności od klasy. Łańcuch jest pusty, jeśli nie ma znaków, a tablica jest pusta, jeśli nie zawiera żadnych elementów.
Czy brakuje czegoś lub dokładniejszego porównania?
:nil?
jest określona na ::Kernel
i nadpisane na ::NilClass
, podczas gdy :empty?
jest realizowany oddzielnie na wielu zajęciach (natywnie na ::String
, ::Array
, ::Hash
, i nie natywnie w innych klasach, takich jak ::Set
od stdlib oraz ::ActiveRecord::Relation
z szyn). :nil?
Jest więc dostępny we wszystkich podklasach, ::Object
a także we wszystkich klasach, które ::Kernel
same w sobie obejmują, gdzie :empty?
należy je zaimplementować lub uwzględnić w swoich klasach.
nil
koncepcję, zacznij tutaj .
[1] pry(main)> [].blank? => true
present?
. A to dlatego, żeblank?
zwraca wartość true dla pustej tablicy.