0Pricing
Ruby Academy · Lekcja

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"
end

Podstawowe 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"
end

Wiele 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"
end

Gałąź 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"
end

case 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 letter

Sł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"
end

Dopasowywanie 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"
end

Dopasowywanie 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"
end

Magia ===

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"
end

case 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"
end

Połą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 msg

Szybki test

Sprawdź swoją wiedzę na temat case/when.

Podsumowanie

Poznałeś wyrażenie case:

  • when dopasowuje pierwsze pasujące wyrażenie, a następnie przechodzi do end.
  • Jeden element when może zawierać kilka wartości.
  • case zwraca wartość i obsługuje then.
  • Zakresy, klasy Range, Class i Regexp działają, ponieważ when uż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 kind

Czę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

  1. if, unless, ternary
  2. Wyrażenia case/when
  3. Prawdziwość w Ruby
  4. Klauzule ochronne
← Powrót do Ruby Academy