Wyrażenia case/when
Rozgałęzianie wielokierunkowe
Wyrażenia case/when to bezpłatna lekcja Ruby Academy na CoddyKit. To lekcja 2 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.
Rozgałęzianie wielokierunkowe
Gdy porównujesz jedną wartość z wieloma możliwościami, długi łańcuch if/elsif staje się nieczytelny. Wyrażenie case w Ruby pozwala przejrzyście zapisać rozgałęzianie wielokierunkowe.
day = "Mon"
case day
when "Sat", "Sun"
puts "Weekend"
else
puts "Weekday"
endPodstawowe case / when
Wartość po case jest porównywana kolejno z każdym when. Wykonywane jest pierwsze dopasowanie, a następnie sterowanie przechodzi do end.
grade = "B"
case grade
when "A"
puts "Excellent"
when "B"
puts "Good"
when "C"
puts "Okay"
endWiele wartości w jednym when
Wymień kilka wartości w jednym when, oddzielając je przecinkami. Jeśli dowolna z nich pasuje, wykonywana jest ta gałąź.
char = "e"
case char
when "a", "e", "i", "o", "u"
puts "Vowel"
else
puts "Consonant"
endGałąź else
Dodaj else jako gałąź obsługującą wszystkie pozostałe przypadki. Bez niej niedopasowane wyrażenie case po prostu zwraca nil.
code = 500
case code
when 200
puts "OK"
when 404
puts "Not Found"
else
puts "Other status"
endcase jest wyrażeniem
Podobnie jak if, case zwraca wartość dopasowanej gałęzi, więc możesz przypisać ją bezpośrednio.
score = 82
letter = case
when score >= 90 then "A"
when score >= 80 then "B"
else "C"
end
puts letterSłowo kluczowe then
Użyj then, aby w przypadku krótkich gałęzi umieścić ich ciało w tym samym wierszu co when.
n = 3
case n
when 1 then puts "one"
when 2 then puts "two"
when 3 then puts "three"
endDopasowywanie zakresów
Element when może zawierać Range. Ruby używa w tym celu operatora ===, a operator === obiektu Range sprawdza przynależność.
score = 73
case score
when 90..100 then puts "A"
when 70..89 then puts "B"
when 0..69 then puts "C"
endDopasowywanie według klasy
Ponieważ Class === object ma wartość true, gdy obiekt jest instancją danej klasy, możesz rozgałęziać kod według typu.
value = 3.14
case value
when Integer then puts "an integer"
when Float then puts "a float"
when String then puts "a string"
endMagia ===
Każde when wywołuje pattern === value. Obiekty Range, Class i Regexp definiują użyteczne zachowanie operatora ===, dlatego case jest tak elastyczne.
email = "jane@example.com"
case email
when /@/ then puts "Looks like an email"
else puts "No @ sign"
endcase bez wartości
Pomiń wartość po case, aby zapisać przejrzysty łańcuch warunków logicznych, podobny do uporządkowanego if/elsif.
temp = 5
case
when temp < 0 then puts "Freezing"
when temp < 15 then puts "Cold"
when temp < 25 then puts "Mild"
else puts "Warm"
endPołączenie wszystkiego
case jest idealne, gdy decyzja zależy od jednej wartości. Wybierz formę bez wartości, gdy każda gałąź jest osobnym testem logicznym.
role = :admin
msg = case role
when :admin then "Full access"
when :editor then "Can edit"
when :viewer then "Read only"
else "No access"
end
puts msgSzybki test
Sprawdź swoją wiedzę na temat case/when.
Podsumowanie
Poznałeś wyrażenie case:
whendopasowuje pierwsze pasujące wyrażenie, a następnie przechodzi doend.- Jeden element
whenmoże zawierać kilka wartości. casezwraca wartość i obsługujethen.- Zakresy, klasy Range, Class i Regexp działają, ponieważ
whenużywa operatora===. - Forma bez wartości tworzy przejrzysty łańcuch warunków logicznych.
n = 42
kind = case
when n.zero? then "zero"
when n.positive? then "positive"
else "negative"
end
puts kindCzęsto zadawane pytania
Czy lekcja „Wyrażenia case/when” jest bezpłatna?
Tak — pełny tekst „Wyrażenia case/when” 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 „Wyrażenia case/when”?
Rozgałęzianie wielokierunkowe Ć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 2 z 4.
Ile czasu zajmuje lekcja „Wyrażenia case/when”?
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
- if, unless, ternary
- Wyrażenia case/when
- Prawdziwość w Ruby
- Klauzule ochronne