Scala vermeidet null: Ein Wert, der fehlen kann, hat den Typ Option[T] und ist entweder Some(wert) oder None. Du packst ihn sicher aus mit match, getOrElse, map oder fold. So erzwingt der Compiler, dass du den Fall „fehlt“ bedenkst.
Ähnlich funktioniert Either[Fehler, Wert] für Ergebnisse, die fehlschlagen können, und Try für Code, der Ausnahmen werfen kann.
def finde(liste: List[Int], ziel: Int): Option[Int] =
liste.indexOf(ziel) match
case -1 => None
case i => Some(i)
@main def optionDemo(): Unit =
println(finde(List(4, 8, 15), 8)) // Some(1)
println(finde(List(4, 8, 15), 9).getOrElse(-1)) // -1
finde(List(4, 8, 15), 15) match
case Some(i) => println(s"gefunden bei $i")
case None => println("nicht gefunden")Merke
OptionistSome(wert)oderNonegetOrElseliefert einen Ersatzwertmatchpackt Optionen sicher aus
Aufgabe
Wandle einen Text mit `toIntOption` um und gib bei Fehler 0 aus.