0Pricing
Ruby Academy · Lekcja

Wartości domyślne i scalanie

fetch, merge, dig

Wartości domyślne i scalanie to bezpłatna lekcja Ruby Academy na CoddyKit. To lekcja 4 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Ruby Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Ruby Academy zawiera 4 lekcji w sumie.

Problem z nil

Odczyt brakującego klucza zwraca nil, co może powodować nieoczekiwane wyniki w obliczeniach lub logice. Ruby oferuje bezpieczniejsze sposoby obsługi braku wartości.

h = { a: 1 }
puts h[:b].inspect

Bezpieczny dostęp za pomocą fetch

fetch zwraca wartość albo zgłasza czytelny błąd, jeśli brakuje klucza. Należy go używać, gdy klucz jest wymagany.

h = { name: "Ada" }
puts h.fetch(:name)

fetch z wartością domyślną

Przekazanie do fetch drugiego argumentu określa wartość zastępczą używaną tylko wtedy, gdy brakuje klucza.

h = { name: "Ada" }
puts h.fetch(:age, 0)
puts h.fetch(:name, "Unknown")

fetch z blokiem

Można przekazać blok, aby odroczyć obliczenie wartości zastępczej. Blok jest wykonywany tylko wtedy, gdy klucz nie zostanie znaleziony.

h = {}
puts h.fetch(:x) { "computed default" }

Hash z wartością domyślną

Hash.new(default) zwraca wartość domyślną dla każdego brakującego klucza zamiast nil. Wartość domyślna jest współdzielona, dlatego najlepiej używać tego rozwiązania dla prostych, niezmiennych wartości.

counts = Hash.new(0)
counts[:a] += 1
counts[:a] += 1
puts counts[:a]
puts counts[:b]

Wartość domyślna z blokiem

Hash.new { |hash, key| ... } oblicza nową wartość domyślną dla każdego klucza, dzięki czemu idealnie nadaje się do grupowania elementów w tablicach.

groups = Hash.new { |h, k| h[k] = [] }
groups[:fruit] << "apple"
groups[:fruit] << "pear"
puts groups[:fruit].inspect

Zliczanie z wartościami domyślnymi

Wartość domyślna równa 0 upraszcza zliczanie słów i czyni je przejrzystym.

words = ["a", "b", "a", "a"]
count = Hash.new(0)
words.each { |w| count[w] += 1 }
puts count

Scalanie hashy

merge łączy dwa hashe w nowy hash. W przypadku konfliktu wygrywają klucze z drugiego hasha.

defaults = { color: "red", size: "M" }
user = { color: "blue" }
puts defaults.merge(user)

Scalanie z blokiem

Przekazanie bloku do merge pozwala rozstrzygać konflikty, na przykład przez dodawanie wartości.

a = { x: 1, y: 2 }
b = { y: 3, z: 4 }
puts a.merge(b) { |key, old, new| old + new }

Bezpieczny dostęp do zagnieżdżonych danych za pomocą dig

dig bezpiecznie odczytuje dane z zagnieżdżonych hashy, zwracając nil, jeśli brakuje dowolnego poziomu, zamiast powodować awarię.

data = { user: { address: { city: "London" } } }
puts data.dig(:user, :address, :city)
puts data.dig(:user, :phone, :home).inspect

Łączenie narzędzi

Połączenie wartości domyślnych i scalania pozwala tworzyć konfigurację na podstawie wartości bazowych oraz ich nadpisań.

base = { retries: 3, timeout: 30 }
options = base.merge(timeout: 60)
puts options.fetch(:timeout)

Szybki test

Sprawdź swoją wiedzę o wartościach domyślnych i scalaniu.

Podsumowanie

Potrafi już Pan/Pani łagodnie obsługiwać brakujące dane:

  • fetch z wartością domyślną, blokiem lub rygorystycznym błędem
  • Hash.new(0) i wartości domyślne z blokiem do zliczania i grupowania
  • merge z blokami rozstrzygającymi konflikty
  • dig do bezpiecznego dostępu do zagnieżdżonych danych

Następny kurs: zakresy i Enumerable.

c = Hash.new(0)
c[:hits] += 1
puts c[:hits]

Często zadawane pytania

Czy lekcja „Wartości domyślne i scalanie” jest bezpłatna?

Tak — pełny tekst „Wartości domyślne i scalanie” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Ruby Academy, przejdź na CoddyKit PRO. Kurs Ruby Academy zawiera 4 lekcji w sumie.

Co nauczysz się w „Wartości domyślne i scalanie”?

fetch, merge, dig Ćwiczysz Ruby Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć Ruby Academy?

Nie wymagamy żadnego doświadczenia. Ruby Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 4 z 4.

Ile czasu zajmuje lekcja „Wartości domyślne i scalanie”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji Ruby Academy?

Tak. Każda lekcja Ruby Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Symbole a napisy
  2. Tworzenie i odczytywanie hashy
  3. Iterowanie po hashu
  4. Wartości domyślne i scalanie
← Powrót do Ruby Academy