Menu
Coddy logo textTech

Zakresy w case / when

Część sekcji Logika i przepływ programu ścieżki Ruby w Coddy. Lekcja 8 z 56.

Zakresy świetnie sprawdzają się w instrukcji case języka Ruby. Podczas gdy w wielu językach trzeba użyć łańcucha if/elsif z operatorami porównania, Ruby pozwala bezpośrednio dopasować wartość do zakresów.

score = 78
grade = case score
        when 90..100 then "A"
        when 80..89  then "B"
        when 70..79  then "C"
        when 60..69  then "D"
        else              "F"
        end
puts grade  # C

Za kulisami when 70..79 używa operatora === zakresu, który jest równoważny (70..79).include?(score).

Forma case jest krótsza, łatwiejsza do czytania i szybsza w pisaniu niż długa konstrukcja if/elsif.

challenge icon

Wyzwanie

Łatwy

Wczytaj listę wieków będących liczbami całkowitymi, oddzielonych przecinkami. Dla każdego wieku przypisz go do kategorii za pomocą instrukcji case, używając przedziałów:

  • 0..12: Child
  • 13..19: Teen
  • 20..64: Adult
  • 65 lub więcej: Senior
  • Wszystkie pozostałe wartości (ujemne): pomiń, nie uwzględniaj ich w raporcie

Wypisz wiersz z liczbą dla każdej niezerowej kategorii, w tej ustalonej kolejności: Child, Teen, Adult, Senior. Pomijaj kategorie, w których nie ma żadnych osób. Po podaniu liczebności wypisz Skipped: <n>, gdzie n to liczba ujemnych (nieprawidłowych) wieków.

Dla danych wejściowych 5,15,30,70,-3,40,12 wynik to:

Child: 2
Teen: 1
Adult: 2
Senior: 1
Skipped: 1

Spróbuj swoich sił

ages = gets.chomp.split(",").map(&:to_i)

# TODO: sklasyfikuj każdy wiek za pomocą case + zakresów, policz wartości w każdej kategorii, wypisz raport
quiz iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

Wszystkie lekcje w sekcji Logika i przepływ programu

Poćwicz samodzielnie: Kompilator Ruby online