0Pricing
Ruby Academy · Lekcja

Wzorce find i strażnicy

Warunki w dopasowaniach

Wzorce find i strażnicy to bezpłatna lekcja Ruby Academy na CoddyKit. To lekcja 3 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.

Warunki ochronne

Do wzorca można dodać warunek ochronny if lub unless. Gałąź dopasowuje się tylko wtedy, gdy zarówno wzorzec, jak i warunek zakończą się powodzeniem.

case 7
in Integer => n if n.odd?
  puts 'odd integer'
end

Warunki ochronne korzystają ze związanych zmiennych

Warunek ochronny może odwoływać się do zmiennych związanych przez wzorzec, dzięki czemu można wyrażać złożone warunki dotyczące dopasowanych danych.

case [4, 9]
in [a, b] if a < b
  puts 'ascending pair'
end

Warunki ochronne unless

Warunek ochronny unless dopasowuje się, gdy warunek jest fałszywy, czyli odwrotnie niż if.

case 0
in Integer => n unless n.positive?
  puts 'zero or negative'
end

Wiele gałęzi z warunkami ochronnymi

Można łączyć warunki ochronne w wielu gałęziach, aby zbudować przejrzystą drabinę decyzji.

def grade(score)
  case score
  in Integer => s if s >= 90 then 'A'
  in Integer => s if s >= 70 then 'B'
  else 'C'
  end
end
puts(grade(85))

Wzorce wyszukiwania

Wzorzec wyszukiwania [*, x, *] przeszukuje tablicę w poszukiwaniu podwzorca znajdującego się w dowolnym miejscu, ze splatami na obu końcach.

case [1, 2, 3, 4]
in [*, 3, *]
  puts 'contains a 3'
end

Wiązanie we wzorcu wyszukiwania

Dopasowany element we wzorcu wyszukiwania można związać, przechwytując znalezioną wartość.

case [10, 20, 30]
in [*, x, *] if x > 25
  puts("found #{x}")
end

Przechwytywanie otoczenia

Oba splaty we wzorcu wyszukiwania można nazwać, aby przechwycić elementy znajdujące się przed dopasowaniem i po nim.

case [1, 2, 99, 4, 5]
in [*before, 99, *after]
  p before
  p after
end

Wyszukiwanie elementu określonego typu

Wzorce wyszukiwania można łączyć ze wzorcami typów, aby znaleźć pierwszy element określonego typu.

case [1, 'hi', 2]
in [*, String => word, *]
  puts(word)
end

Warunki ochronne a wzorce

Należy wyrażać we wzorcu to, co można opisać strukturalnie, a warunków ochronnych używać tylko dla warunków, których wzorce nie potrafią uchwycić (takich jak porównania liczbowe lub wywołania metod).

case { role: 'admin', age: 40 }
in { role: 'admin', age: } if age >= 18
  puts 'adult admin'
end

Łączenie wyszukiwania z warunkiem ochronnym

Wzorce wyszukiwania i warunki ochronne pozwalają wspólnie sprawdzić, czy dowolny element spełnia dany warunek.

numbers = [3, 5, 8, 11]
case numbers
in [*, n, *] if n.even?
  puts("first even-ish hit: #{n}")
end

Kolejność gałęzi

Gałęzie są sprawdzane od góry do dołu; wygrywa pierwsze dopasowanie. Bardziej szczegółowe wzorce z warunkami ochronnymi należy umieszczać przed ogólnymi.

case 100
in Integer => n if n > 50 then puts 'big'
in Integer then puts 'small'
end

Szybkie sprawdzenie

Co robi wzorzec wyszukiwania [*, x, *]?

Podsumowanie: wzorce wyszukiwania i warunki ochronne

Do dopasowywania dodali już Państwo warunki i wyszukiwanie:

  • Warunki ochronne if / unless uszczegóławiają wzorzec
  • Warunki ochronne mogą korzystać ze związanych zmiennych
  • Wzorce wyszukiwania [*, x, *] przeszukują tablicę w dowolnym miejscu
  • Oba splaty można nazwać, aby przechwycić otoczenie
  • Wygrywa pierwsza pasująca gałąź, więc kolejność ma znaczenie
case [1, 7, 3]
in [*, x, *] if x > 5 then puts x
end

Często zadawane pytania

Czy lekcja „Wzorce find i strażnicy” jest bezpłatna?

Tak — pełny tekst „Wzorce find i strażnicy” 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 „Wzorce find i strażnicy”?

Warunki w dopasowaniach Ć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 3 z 4.

Ile czasu zajmuje lekcja „Wzorce find i strażnicy”?

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. Podstawy case/in
  2. Wzorce tablic i hashy
  3. Wzorce find i strażnicy
  4. Praktyczne zastosowania
← Powrót do Ruby Academy