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].inspectBezpieczny 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].inspectZliczanie 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 countScalanie 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:
fetchz wartością domyślną, blokiem lub rygorystycznym błędemHash.new(0)i wartości domyślne z blokiem do zliczania i grupowaniamergez blokami rozstrzygającymi konfliktydigdo 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
- Symbole a napisy
- Tworzenie i odczytywanie hashy
- Iterowanie po hashu
- Wartości domyślne i scalanie