let, also und Scope-Funktionen
Arbeiten Sie mit Nullable-Werten.
let, also und Scope-Funktionen ist eine kostenlose Android Academy-Lektion auf CoddyKit. Dies ist Lektion 3 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 Android Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Android Academy-Kurs umfasst insgesamt 4 Lektionen.
Was sind Scope-Funktionen?
Mit Scope-Funktionen können Sie einen Codeblock im Kontext eines Objekts ausführen. Dadurch wird der Code übersichtlicher, insbesondere im Umgang mit möglicherweise null-Werten.
Diese Lektion konzentriert sich auf let und also, die beiden nützlichsten Funktionen für Null-Sicherheit, und ihre Verbindung mit dem Safe-Call-Operator.
Die Funktion let
let führt einen Block aus und übergibt das Objekt als it. Die Funktion gibt zurück, was der Block zurückgibt.
Das ist nützlich, um einen Wert umzuwandeln oder einen temporären Namen auf einen bestimmten Gültigkeitsbereich zu beschränken.
fun main() {
val length = "Kotlin".let { it.length }
println(length) // prints: 6
}let für Null-Sicherheit
Kombinieren Sie ?. mit let, um einen Block nur dann auszuführen, wenn ein Wert nicht null ist. Der Block wird einmal ausgeführt, wobei der Wert als it übergeben wird.
Ist der Wert null, wird der Block vollständig übersprungen.
fun main() {
val name: String? = "Ada"
name?.let {
println("Hello, " + it)
}
}Bei null übersprungen
Wenn der Empfänger null ist, führt ?.let keine Aktion aus. Der Block wird niemals ausgeführt.
Dieses Programm gibt nichts aus, weil name null ist.
fun main() {
val name: String? = null
name?.let {
println("Hello, " + it)
}
}it umbenennen
Sie können dem Parameter statt it einen aussagekräftigeren Namen geben. Das verbessert die Lesbarkeit in längeren Blöcken.
Verwenden Sie einen Pfeil, um den Namen explizit festzulegen.
val name: String? = "Bo"
name?.let { value ->
println(value.uppercase())
}Die Funktion also
also übergibt das Objekt ebenfalls als it, gibt aber statt des Ergebnisses des Blocks das ursprüngliche Objekt zurück.
Die Funktion eignet sich hervorragend für Seiteneffekte wie Protokollierung, während der Wert in einer Kette unverändert bleibt.
fun main() {
val n = 5.also { println("got " + it) }
println(n) // prints: 5
}Rückgabewert von let und also
Der entscheidende Unterschied: let gibt das Ergebnis des Blocks zurück, während also das ursprüngliche Objekt zurückgibt.
Wählen Sie let zum Umwandeln eines Werts und also, wenn Sie einen Wert prüfen möchten, ohne ihn zu verändern.
val a = "hi".let { it.length } // a = 2 (Int)
val b = "hi".also { it.length } // b = "hi" (String)also für die Protokollierung
Da also das Objekt zurückgibt, lässt es sich in eine Kette einfügen, um einen Wert während des Ablaufs zu prüfen.
Hier protokollieren wir einen möglicherweise null-Wert nur dann, wenn er vorhanden ist, und verwenden ihn anschließend weiter.
fun main() {
val token: String? = "abc"
val result = token?.also { println("token: " + it) }
println(result)
}let mit Elvis
Kombinieren Sie ?.let mit dem Elvis-Operator, um eine Alternative für den Fall bereitzustellen, dass der Wert null ist.
Der Block erzeugt ein Ergebnis, wenn der Wert vorhanden ist; die Elvis-Seite behandelt den Fall null.
fun main() {
val raw: String? = null
val out = raw?.let { it.trim() } ?: "empty"
println(out) // prints: empty
}Die passende Scope-Funktion auswählen
Verwenden Sie für Null-Sicherheit let, wenn Sie einen Wert umwandeln oder einen nicht nullen Wert in einem Block verwenden möchten. Verwenden Sie also, wenn Sie einen Seiteneffekt ausführen, aber das ursprüngliche Objekt beibehalten möchten.
Beide Funktionen lassen sich natürlich mit dem Safe-Call-Operator kombinieren, um Abstürze durch null zu vermeiden.
user?.let { save(it) } // transform/use
user?.also { log(it) } // side effect, keep userEin kombiniertes Beispiel
Dieses Programm verwendet ?.let, um eine Nachricht zu erstellen, und Elvis als Ausweichlösung. Es zeigt den typischen Ablauf von null-sicherem Kotlin im Alltag.
Es sind keine expliziten Prüfungen auf null zu sehen, trotzdem ist der Code vollständig sicher.
fun main() {
val city: String? = "Goreme"
val label = city?.let { "City: " + it } ?: "Unknown"
println(label)
}Kurzer Test
Testen Sie Ihr Verständnis von let und also.
Zusammenfassung
Scope-Funktionen führen einen Block im Kontext eines Objekts aus. let übergibt das Objekt als it und gibt das Ergebnis des Blocks zurück; also übergibt it und gibt das ursprüngliche Objekt zurück.
Mit ?.let können Sie nur dann mit einem Wert arbeiten, wenn er nicht null ist. Als Nächstes führen Sie diese Konzepte zusammen, um NullPointerExceptions vollständig zu vermeiden.
Häufig gestellte Fragen
Ist die Lektion „let, also und Scope-Funktionen“ kostenlos?
Ja — der vollständige Text von „let, also und Scope-Funktionen“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Android Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Android Academy-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „let, also und Scope-Funktionen“?
Arbeiten Sie mit Nullable-Werten. Du übst Android 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 Android Academy zu starten?
Keine Vorkenntnisse erforderlich. Android 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 3 von 4.
Wie lange dauert die Lektion „let, also und Scope-Funktionen“?
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 Android Academy-Lektion Code schreiben und ausführen?
Ja. Jede Android 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- und Non-Null-Typen
- Sichere Aufrufe und Elvis
- let, also und Scope-Funktionen
- NullPointerExceptions vermeiden