null vermeiden
Option-Grundlagen
null vermeiden ist eine kostenlose Scala for Backend Engineering & Functional Programming-Lektion auf CoddyKit. Dies ist Lektion 1 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Scala for Backend Engineering & Functional Programming-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Scala for Backend Engineering & Functional Programming-Kurs umfasst insgesamt 4 Lektionen.
Das Problem mit null
In vielen Sprachen wird ein fehlender Wert durch null dargestellt. null führt jedoch zur gefürchteten NullPointerException, wenn Sie vergessen, den Wert zu prüfen.
Scala bietet eine sicherere Alternative: den Typ Option.
Was ist Option?
Option[A] repräsentiert einen Wert, der vorhanden sein kann oder nicht. Es gibt genau zwei Fälle:
Some(value), wenn ein Wert vorhanden istNone, wenn kein Wert vorhanden ist
Der Typ selbst zeigt an, dass ein Wert fehlen kann.
object Main {
def main(args: Array[String]): Unit = {
val present: Option[Int] = Some(42)
val absent: Option[Int] = None
println(present)
println(absent)
}
}Some erstellen
Verpacken Sie einen vorhandenen Wert in Some, um auszudrücken, dass er definitiv vorhanden ist.
object Main {
def main(args: Array[String]): Unit = {
val name: Option[String] = Some("Ada")
println(name)
}
}Fehlen mit None darstellen
None ist der einzelne Wert, der verwendet wird, wenn nichts vorhanden ist. Er funktioniert für jeden Option-Typ.
object Main {
def lookup(found: Boolean): Option[Int] =
if (found) Some(100) else None
def main(args: Array[String]): Unit = {
println(lookup(true))
println(lookup(false))
}
}Funktionen, die fehlschlagen können
Wenn Sie Option zurückgeben, wird die Möglichkeit eines fehlenden Ergebnisses in der Typsignatur ausdrücklich angegeben. Aufrufer können sie nicht ignorieren.
object Main {
def findUser(id: Int): Option[String] =
if (id == 1) Some("Grace") else None
def main(args: Array[String]): Unit = {
println(findUser(1))
println(findUser(2))
}
}Mit isDefined und isEmpty prüfen
isDefined zeigt an, ob ein Option ein Some ist, und isEmpty, ob es ein None ist.
object Main {
def main(args: Array[String]): Unit = {
val a: Option[Int] = Some(5)
val b: Option[Int] = None
println(a.isDefined)
println(b.isEmpty)
}
}Pattern Matching für ein Option
Da Option ein sealed ADT ist, können Sie darauf Pattern Matching anwenden. So behandeln Sie das Vorhandensein und Fehlen eindeutig.
object Main {
def greet(name: Option[String]): String = name match {
case Some(n) => s"Hello, $n"
case None => "Hello, stranger"
}
def main(args: Array[String]): Unit = {
println(greet(Some("Bo")))
println(greet(None))
}
}Option aus Nullable-Werten
Wenn Sie mit Code arbeiten müssen, der null zurückgibt, verpacken Sie den Rückgabewert mit Option(...). null wird in None und jeder tatsächliche Wert in Some umgewandelt.
object Main {
def main(args: Array[String]): Unit = {
val maybe = Option("data")
val nothing = Option(null)
println(maybe)
println(nothing)
}
}Rückgabewerte der Standardbibliothek vom Typ Option
Viele integrierte Methoden geben bereits Option zurück, statt Fehler zu riskieren. Beispielsweise behandelt List.headOption leere Listen sicher.
object Main {
def main(args: Array[String]): Unit = {
val xs = List(1, 2, 3)
val empty = List.empty[Int]
println(xs.headOption)
println(empty.headOption)
}
}Warum Option statt null?
Option ist besser als null, weil es:
- Fehlende Werte im Typ sichtbar macht
- Aufrufer zwingt, den fehlenden Fall zu behandeln
- NullPointerExceptions verhindert
- Sich mit map, flatMap und for-comprehensions kombinieren lässt
Alles zusammenführen
Eine kleine Suche, die Option zurückgibt und anschließend sicher mit Pattern Matching behandelt wird.
object Main {
val prices = Map("apple" -> 3, "pear" -> 5)
def priceOf(item: String): Option[Int] = prices.get(item)
def main(args: Array[String]): Unit = {
priceOf("apple") match {
case Some(p) => println(s"costs $p")
case None => println("not for sale")
}
println(priceOf("banana"))
}
}Schnelltest
Testen Sie Ihr Verständnis von Option.
Zusammenfassung
Sie haben gelernt, mit Option null zu vermeiden:
Option[A]istSome(value)oderNone- Es macht das mögliche Fehlen eines Werts im Typ ausdrücklich sichtbar
- Prüfen Sie mit
isDefined/isEmptyoder per Pattern Matching - Verwenden Sie
Option(x), um Nullable-Werte zu verpacken - Bibliotheksmethoden wie
headOptionundMap.getgeben Option zurück
Häufig gestellte Fragen
Ist die Lektion „null vermeiden“ kostenlos?
Ja — der vollständige Text von „null vermeiden“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Scala for Backend Engineering & Functional Programming-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Scala for Backend Engineering & Functional Programming-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „null vermeiden“?
Option-Grundlagen Du übst Scala for Backend Engineering & Functional Programming mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um Scala for Backend Engineering & Functional Programming zu starten?
Keine Vorkenntnisse erforderlich. Scala for Backend Engineering & Functional Programming auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 1 von 4.
Wie lange dauert die Lektion „null vermeiden“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser Scala for Backend Engineering & Functional Programming-Lektion Code schreiben und ausführen?
Ja. Jede Scala for Backend Engineering & Functional Programming-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.