Menu
Coddy logo textTech

when z wieloma wartościami

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

Pojedyncza klauzula when może dopasowywać dowolną z kilku wartości oddzielonych przecinkami. Gałąź zostanie wykonana, jeśli wartość sprawdzana jest równa którejkolwiek z nich.

day = "Sat"
kind = case day
       when "Sat", "Sun"                          then "weekend"
       when "Mon", "Tue", "Wed", "Thu", "Fri"  then "weekday"
       end
puts kind   # weekend

To znacznie czytelniejsze niż łączenie operatorów || w instrukcji if/elsif.

Możesz też mieszać typy wartości w jednym when: ciągi znaków, zakresy, wzorce regex — wszystkie po prostu reagują na ===:

def describe(x)
  case x
  when 0, nil       then "empty"
  when 1..9         then "small"
  when 10..99       then "medium"
  when /^huge:/i    then "flagged huge"
  end
end

Wybierz takie formy, dzięki którym każdą gałąź łatwo odczytać na pierwszy rzut oka.

challenge icon

Wyzwanie

Łatwy

Odczytaj pojedynczy znak (jeden wiersz wejścia). Użyj case z gałęziami when obsługującymi wiele wartości, aby wypisać jedną z wartości:

  • vowel: wejście to jedna z wartości a, e, i, o, u (bez rozróżniania wielkości liter, najpierw zamień wejście na małe litery)
  • digit: wejście to jedna z wartości 0..9 (użyj zakresu)
  • punctuation: wejście to jedna z wartości ., ,, !, ?
  • other: cokolwiek innego

Traktuj wejście jako ciąg znaków o długości jednego znaku. Przetestuj gałąź cyfr, używając zakresu takiego jak "0".."9".

Dla wejścia E wynikiem jest vowel; dla 7 jest to digit; dla ! jest to punctuation.

Spróbuj swoich sił

ch = gets.chomp

# TODO: case ch.downcase ... z gałęziami when obsługującymi wiele wartości
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