Menu
Coddy logo textTech

case z klasami i wyrażeniami regularnymi

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

Użyto instrukcji case z zakresami. Ta sama instrukcja dopasowuje również klasy i wyrażenia regularne: w obu przypadkach za pomocą operatora ===, który when wywołuje wewnętrznie.

Dopasuj do klasy, aby rozgałęzić działanie w zależności od rodzaju otrzymanej wartości:

def describe(value)
  case value
  when Integer then "a whole number"
  when Float   then "a decimal"
  when String  then "some text"
  else              "something else"
  end
end

puts describe(42)      # liczba całkowita
puts describe(3.14)    # liczba dziesiętna
puts describe("hi")    # jakiś tekst

Dopasuj wyrażenie regularne, aby rozgałęzić działanie na podstawie formatu ciągu znaków, numeru telefonu, adresu e-mail lub daty:

def kind_of(text)
  case text
  when /^\d+$/        then "all digits"
  when /@/            then "looks like an email"
  when /^[A-Z]/       then "starts with a capital"
  else                     "other"
  end
end

To znacznie czytelniejsze rozwiązanie niż łańcuch wywołań is_a? lub match? w if/elsif.

challenge icon

Wyzwanie

Łatwy

Odczytaj jeden wiersz danych wejściowych. Użyj instrukcji case, aby wypisać jedną z tych etykiet w zależności od tego, jak wyglądają dane wejściowe:

  • Same cyfry, number
  • Zawiera @: email
  • Zaczyna się wielką literą, name
  • Wszystko inne, unknown

Sprawdzaj reguły w podanej kolejności (czyli 123 to number, a nie unknown; kevin@coddy.tech to email; Alice to name).

Dla danych wejściowych kevin@coddy.tech wynikiem jest email.

Spróbuj swoich sił

input = gets.chomp

# TODO: case input ... when /^\d+$/, /@/, /^[A-Z]/ ... else ... end
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