Safe Call ?. und Elvis ?: im praktischen Code
Verketten Sie Safe Calls und stellen Sie mit dem Elvis-Operator Ersatzwerte bereit.
Safe Call ?. und Elvis ?: im praktischen Code ist eine kostenlose Kotlin Academy-Lektion auf CoddyKit. Dies ist Lektion 2 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 Kotlin Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Kotlin Academy-Kurs umfasst insgesamt 4 Lektionen.
Zwei Operatoren mit großer Wirkung
Der Safe Call ?. ruft ein Member nur auf, wenn der Empfänger nicht null ist. Der Elvis-Operator ?: stellt einen Ersatzwert bereit, wenn die linke Seite null ist.
Grundlagen des Safe Calls
x?.member ergibt null, wenn x null ist; andernfalls greift der Ausdruck normal auf member zu.
fun main() {
val name: String? = "Kotlin"
val len: Int? = name?.length
println(len) // 6
val nope: String? = null
println(nope?.length) // null
}Grundlagen des Elvis-Operators
x ?: default gibt x zurück, wenn es nicht null ist, andernfalls den Wert default auf der rechten Seite.
fun main() {
val name: String? = null
val display = name ?: "Anonymous"
println(display) // Anonymous
}Safe Call und Elvis kombinieren
Ein häufiges Idiom: obj?.member ?: default – Wert auslesen oder auf einen Ersatzwert zurückgreifen.
fun main() {
val name: String? = null
val length = name?.length ?: 0
println("length = $length") // 0
}Safe Calls verketten
Verketten Sie ?. über mehrere Ebenen – der gesamte Ausdruck ergibt null, sobald ein Glied null ist.
class Address(val city: String?)
class User(val address: Address?)
fun main() {
val u: User? = User(Address(null))
val city = u?.address?.city ?: "Unknown"
println(city) // Unknown
}Elvis mit throw auf der rechten Seite
Die rechte Seite des Elvis-Operators kann jeder Ausdruck sein, auch throw – praktisch für Prüfungen auf erforderliche Werte.
fun loadConfig(path: String?): String {
val p = path ?: throw IllegalArgumentException("path required")
return "loaded $p"
}
fun main() {
println(loadConfig("/etc/app"))
// loadConfig(null) // throws
}Safe Call mit Methoden
Safe Calls funktionieren mit jeder Methode, nicht nur beim Zugriff auf Eigenschaften.
fun main() {
val raw: String? = " hello "
val cleaned = raw?.trim()?.uppercase() ?: ""
println(cleaned) // HELLO
}Safe Call in Bedingungen
Sie können Safe Calls in Bedingungen verwenden. Kombinieren Sie sie mit dem Elvis-Operator, um Standardwerte für Boolean-Ausdrücke bereitzustellen.
fun main() {
val name: String? = "Alice"
if (name?.startsWith("A") == true) {
println("Starts with A")
}
}Elvis mit return
Verwenden Sie Elvis mit return für Guard Clauses: Beenden Sie die Funktion frühzeitig, wenn ein erforderlicher Wert null ist.
fun process(input: String?) {
val safe = input ?: return
println("processing $safe")
}
fun main() {
process("abc")
process(null) // returns silently
}Elvis mit continue/break
In Schleifen kann Elvis mit continue oder break kurz und bündig auf null reagieren.
fun main() {
val items: List<String?> = listOf("a", null, "b", null, "c")
for (item in items) {
val v = item ?: continue
print("$v ")
}
println() // a b c
}Praxisbeispiel: Konfigurationssuche
Safe Call und Elvis lassen sich zu einer einzeiligen Anweisung kombinieren, die eine optionale Konfiguration mit einem Standardwert ausliest.
class Config(val timeoutMs: Int?, val host: String?)
fun main() {
val cfg: Config? = Config(null, "prod.example.com")
val timeout = cfg?.timeoutMs ?: 5000
val host = cfg?.host ?: "localhost"
println("$host @ $timeout ms")
}Schnelltest
Welchen Wert ergibt user?.email ?: "unknown", wenn user null ist?
Zusammenfassung
Kombinieren Sie Safe Call (?.) und Elvis (?:) für kompakten, null-sicheren Code. Verwenden Sie Elvis mit throw oder return für Guard Clauses, die bei fehlenden Daten frühzeitig abbrechen.
Lerne Kotlin mit einem KI-Tutor — kostenlos
Schreibe und führe echten Code in deinem Browser aus, bekomme sofortige Hilfe von einem 24/7 KI-Tutor und setze dein Lernen im Web oder in der App fort.
- Kurse
- 51
- Lektionen
- 203
Häufig gestellte Fragen
Ist die Lektion „Safe Call ?. und Elvis ?: im praktischen Code“ kostenlos?
Ja — der vollständige Text von „Safe Call ?. und Elvis ?: im praktischen Code“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Kotlin Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Kotlin Academy-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „Safe Call ?. und Elvis ?: im praktischen Code“?
Verketten Sie Safe Calls und stellen Sie mit dem Elvis-Operator Ersatzwerte bereit. Du übst Kotlin Academy 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 Kotlin Academy zu starten?
Keine Vorkenntnisse erforderlich. Kotlin Academy 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 2 von 4.
Wie lange dauert die Lektion „Safe Call ?. und Elvis ?: im praktischen Code“?
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 Kotlin Academy-Lektion Code schreiben und ausführen?
Ja. Jede Kotlin Academy-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.
Alle Lektionen in diesem Kurs
- Nullable-Typen und der ?-Modifier
- Safe Call ?. und Elvis ?: im praktischen Code
- let, also und run mit Nullable-Receivern
- !!-Operator: Wann und warum Sie ihn vermeiden sollten