Spis treściKliknij link, aby przejść do wybranego miejsca
Ta treść została automatycznie przetłumaczona z ukraińskiego.
W Ruby i Rails często można zobaczyć metody blank?, present?, empty? i nil?. Wydają się podobne, ale w rzeczywistości mają różne źródła i zachowanie. Zobaczmy, kiedy którą metodę warto używać.
nil? - podstawowa metoda Ruby
Metoda nil? jest częścią Ruby. Zwraca true, jeśli obiekt to właśnie nil.
nil.nil? # => true "".nil? # => false [].nil? # => false 0.nil? # => false
Używana do sprawdzenia, czy obiekt w ogóle istnieje.
empty? — dla kolekcji i łańcuchów
Metoda empty? jest zdefiniowana w klasach String, Array, Hash, Set i kilku innych. Sprawdza, czy kolekcja lub łańcuch są puste, tzn. nie zawierają elementów ani znaków.
"".empty? # => true
[].empty? # => true
{}.empty? # => true
nil.empty? # => NoMethodError
Jeśli obiekt nie obsługuje empty?, otrzymasz błąd. Dlatego tę metodę warto używać tylko wtedy, gdy dokładnie znasz typ zmiennej.
blank? - z ActiveSupport (Rails)
Metoda blank? pojawia się dzięki bibliotece ActiveSupport, która jest dostarczana z Rails. Jest bardziej "inteligentną" wersją empty?, ponieważ uwzględnia zarówno nil, jak i spacje oraz puste kolekcje.
nil.blank? # => true
"".blank? # => true
" ".blank? # => true
[].blank? # => true
{}.blank? # => true
false.blank? # => true
0.blank? # => false
blank? jest wygodne w użyciu w kodzie Rails, gdy trzeba sprawdzić "pustość" dowolnego obiektu bez wyjątków.
present? - z ActiveSupport (Rails)
Metoda present? to po prostu przeciwieństwo blank?. Zwraca true, jeśli obiekt nie jest pusty.
"Ruby".present? # => true "".present? # => false nil.present? # => false [1, 2].present? # => true
Używana do warunków:
puts "Hello!" if name.present?
Krótko:
- nil? - standardowy Ruby, sprawdza tylko nil.
- empty? - standardowy Ruby, dla kolekcji i łańcuchów itd.
- blank? - z ActiveSupport, uwzględnia zarówno nil, jak i spacje oraz puste kolekcje.
- present? - z ActiveSupport, przeciwny do blank?.
Kiedy co używać
- Jeśli piszesz czysty Ruby bez Rails - używaj nil? i empty?.
- Jeśli masz Rails lub ActiveSupport - częściej wygodnie jest używać blank? / present?, ponieważ obejmują wszystkie przypadki i nie wywołują błędów na nil.
Ten post nie ma jeszcze żadnych dodatków od autora.