Cała oryginalna treść jest tworzona po ukraińsku. Nie wszystkie treści zostały jeszcze przetłumaczone. Niektóre posty mogą być dostępne tylko po ukraińsku.Dowiedz się więcej

Różnica między blank?, present?, empty? a nil? w Ruby

Okładka posta: Różnica między blank?, present?, empty? a nil? w Ruby
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.

Include, Extend, Prepend w Ruby: jak działają i jaka jest różnica
29 paź 21:20

Include, Extend, Prepend w Ruby: jak działają i jaka jest różnica

Нотатки про Ruby та RoR
Нотатки про Ruby та RoR@kovbaska
module_function w Ruby: kiedy metody modułu są dostępne jako modułowe i jako funkcje
29 paź 21:53

module_function w Ruby: kiedy metody modułu są dostępne jako modułowe i jako funkcje

Нотатки про Ruby та RoR
Нотатки про Ruby та RoR@kovbaska
Czym jest memoizacja w Ruby?
30 paź 10:17

Czym jest memoizacja w Ruby?

Нотатки про Ruby та RoR
Нотатки про Ruby та RoR@kovbaska
is_a?, kind_of?, instance_of? — jak Ruby sprawdza typ obiektu?
30 paź 19:55

is_a?, kind_of?, instance_of? — jak Ruby sprawdza typ obiektu?

Нотатки про Ruby та RoR
Нотатки про Ruby та RoR@kovbaska
&& vs and — różnica w Ruby, która może zepsuć twój kod
30 paź 20:23

&& vs and — różnica w Ruby, która może zepsuć twój kod

Нотатки про Ruby та RoR
Нотатки про Ruby та RoR@kovbaska
Zmienne w Ruby: @, @@ oraz zmienna instancji klasy
30 paź 20:54

Zmienne w Ruby: @, @@ oraz zmienna instancji klasy

Нотатки про Ruby та RoR
Нотатки про Ruby та RoR@kovbaska
Czym jest Middleware w Ruby on Rails i kiedy jest używane
4 lis 10:39

Czym jest Middleware w Ruby on Rails i kiedy jest używane

Нотатки про Ruby та RoR
Нотатки про Ruby та RoR@kovbaska
Czym jest podejście Vanilla Rails?
14 lis 16:48

Czym jest podejście Vanilla Rails?

Нотатки про Ruby та RoR
Нотатки про Ruby та RoR@kovbaska
Czym jest Elasticsearch i jak działa?
22 lis 12:35

Czym jest Elasticsearch i jak działa?

Нотатки про Ruby та RoR
Нотатки про Ruby та RoR@kovbaska
Czym jest baza danych typu time-series?
22 lis 12:42

Czym jest baza danych typu time-series?

Нотатки про Ruby та RoR
Нотатки про Ruby та RoR@kovbaska
22 lis 12:49

Co to jest VACUUM w PostgreSQL?

Нотатки про Ruby та RoR
Нотатки про Ruby та RoR@kovbaska
Czym jest B-Tree (drzewo zrównoważone)?
22 lis 12:58

Czym jest B-Tree (drzewo zrównoważone)?

Нотатки про Ruby та RoR
Нотатки про Ruby та RoR@kovbaska