Menu
Coddy logo textTech

Case mit Klassen & Regex

Teil des Abschnitts Logik & Programmfluss der Ruby-Journey von Coddy. Lektion 38 von 56.

Sie haben case mit Bereichen verwendet. Dieselbe Anweisung prüft auch auf Klassen und reguläre Ausdrücke: beides über den ===-Operator, den when unter der Haube aufruft.

Vergleichen Sie nach Klasse, um je nach Art des erhaltenen Werts zu verzweigen:

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)      # eine ganze Zahl
puts describe(3.14)    # eine Dezimalzahl
puts describe("hi")    # etwas Text

Mache ein Pattern Matching mit einem regulären Ausdruck, um je nach Form eines Strings zu verzweigen, z. B. eine Telefonnummer, eine E-Mail oder ein Datum:

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

Das ist weit sauberer als eine Kette von is_a?- oder match?-Aufrufen in if/elsif.

challenge icon

Aufgabe

Einfach

Lies eine einzelne Eingabezeile ein. Verwende eine case-Anweisung, um eines dieser Labels auszugeben, je nachdem, wie die Eingabe aussieht (looks):

  • Nur digits, number
  • Enthält @: email
  • starts mit einem capital Letter, name
  • Alles andere, unknown

Überprüfe die Regeln in der aufgelisteten Reihenfolge (sodass 123 number ist und nicht unknown; kevin@coddy.tech ist email; Alice ist name).

Für die Eingabe kevin@coddy.tech lautet die Ausgabe email.

Probier es selbst

input = gets.chomp

# TODO: case input ... when /^\d+$/, /@/, /^[A-Z]/ ... else ... end
quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Logik & Programmfluss

Übe selbstständig: Online-Ruby-Compiler