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 # weekendTo 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
endWybierz takie formy, dzięki którym każdą gałąź łatwo odczytać na pierwszy rzut oka.
Wyzwanie
ŁatwyOdczytaj 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ścia, 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ści0..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
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
1Łańcuchy znaków w szczegółach
Przegląd metod łańcuchów znakówInterpolacja łańcuchów znakówIterowanie po łańcuchach znakówDzielenie i łączeniePowtórka – Tkacz łańcuchów znaków4Bloki, procki i lambdy
Czym jest blok?do..end a nawiasy klamroweSłowo kluczowe yieldParametry blokuProcki i lambdyPodsumowanie — własny iterator7Hashe, część 2
Hash.new z wartościami domyślnymiIterowanie po haszachZagnieżdżone haszeŁączenie i przekształcaniePowtórka — licznik częstotliwości10Projekt – ewidencja uczniów
Przegląd projektuDodawanie ucznia5Potęga Enumerable
Select i RejectŁączenie wywołań mapReduce / Injectcount, all?, any?, none?group_by i partitionsort_by, min_by, max_byPodsumowanie — potok danych8Zaawansowane podejmowanie decyzji
case z klasami i wyrażeniami regularnymiwhen z wieloma wartościamiOperator trójargumentowyInline if / unlessPowtórka – klasyfikator ocenPoćwicz samodzielnie: Kompilator Ruby online