match ist Scalas mächtiges switch: Es prüft Werte, Typen, Bereiche und zerlegt Datenstrukturen (case classes, Listen, Tupel). Mit Guards (if) schränkst du Fälle ein. Bei einem sealed trait weiß der Compiler alle Varianten und warnt, wenn du eine vergisst.
Pattern Matching ersetzt viele verschachtelte if-Abfragen durch lesbare Fälle.
sealed trait Form
case class Kreis(r: Double) extends Form
case class Rechteck(b: Double, h: Double) extends Form
def flaeche(f: Form): Double = f match
case Kreis(r) => math.Pi * r * r
case Rechteck(b, h) => b * h
def beschreibe(x: Any): String = x match
case 0 => "null"
case n: Int if n < 0 => "negativ"
case n: Int => s"Zahl $n"
case s: String => s"Text $s"
case _ => "etwas anderes"
@main def matchDemo(): Unit =
println(flaeche(Rechteck(3, 4)))
println(beschreibe(-5))Merke
matchzerlegt Daten und Typen- Guards:
case n if n < 0 sealedlässt den Compiler Vollständigkeit prüfen
Aufgabe
Schreibe eine Funktion, die mit match Wochentage 1 bis 7 benennt.