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'
endWarunki 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'
endWarunki 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'
endWiele 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'
endWią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}")
endPrzechwytywanie 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
endWyszukiwanie 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)
endWarunki 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}")
endKolejność 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'
endSzybkie sprawdzenie
Co robi wzorzec wyszukiwania [*, x, *]?
Podsumowanie: wzorce wyszukiwania i warunki ochronne
Do dopasowywania dodali już Państwo warunki i wyszukiwanie:
- Warunki ochronne
if/unlessuszczegół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
endCzę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
- Podstawy case/in
- Wzorce tablic i hashy
- Wzorce find i strażnicy
- Praktyczne zastosowania