0Pricing
Kotlin Academy · Lektion

let und run: Umwandeln und scopen

Verwenden Sie let für null-sichere Umwandlungen und run für lokale Berechnungen.

let und run: Umwandeln und scopen 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.

let und run

let verwendet it als Receiver, run verwendet this. Beide geben den letzten Ausdruck des Lambdas zurück. Wählen Sie die Funktion danach aus, ob Sie explizite Referenzen bevorzugen.

Grundlagen von let

let übergibt den Receiver als it an das Lambda. Das ist nützlich, um einen Wert umzuwandeln oder den Gültigkeitsbereich einer Variable zu begrenzen.

fun main() {
    val length = "Kotlin".let { it.length }
    println(length) // 6
}

let mit Nullable-Werten

Klassisches Muster: obj?.let { ... } führt den Block nur aus, wenn obj nicht null ist.

fun main() {
    val name: String? = "Ada"
    val upper = name?.let { it.uppercase() } ?: "(unknown)"
    println(upper) // ADA
}

let zur Umwandlung

Verwenden Sie let, um einen Wert umzuwandeln und dabei die Lesbarkeit der Aufrufkette zu erhalten.

fun main() {
    val numStr = "42"
    val doubled = numStr.let { it.toInt() }.let { it * 2 }
    println(doubled) // 84
}

let zur Begrenzung des Gültigkeitsbereichs

Begrenzen Sie die Sichtbarkeit einer Variable auf einen kleinen Block – eine saubere Möglichkeit, eine Verschmutzung des Namensraums zu vermeiden.

fun main() {
    val username = readUserConfig().let { config ->
        config.uppercase()
    }
    println(username)
}
fun readUserConfig() = "ada"

Grundlagen von run

run funktioniert wie let, verwendet aber this anstelle von it. Das ist nützlich, wenn Sie mehrere Member des Receivers aufrufen möchten.

class Rect(val w: Int, val h: Int) {
    fun area() = w * h
    fun perimeter() = 2 * (w + h)
}
fun main() {
    val description = Rect(3, 4).run {
        "area=${area()}, perimeter=${perimeter()}"
    }
    println(description)
}

run als eigenständiger Block

run { ... } (ohne Receiver) führt den Block aus und gibt dessen Ergebnis zurück – nützlich, um Berechnungen zu gruppieren.

fun main() {
    val result = run {
        val a = 10
        val b = 20
        a + b
    }
    println(result) // 30
}

let und run nach Receiver-Stil

Greift der Lambda-Body auf viele Member des Receivers zu, vermeidet run die Präfixe it.. Wird der Receiver nur ein- oder zweimal verwendet, ist let gut lesbar.

class User(val name: String, val email: String, val age: Int)
fun main() {
    val user = User("Ada", "ada@x.io", 35)
    // run: this-style
    val s1 = user.run { "$name <$email> age $age" }
    // let: it-style
    val s2 = user.let { "${it.name} <${it.email}> age ${it.age}" }
    println(s1); println(s2)
}

let und Elvis kombinieren

Die Kombination aus ?.let { ... } und ?: ist ein leistungsfähiges Muster für null-sichere Verarbeitungsketten.

fun main() {
    val raw: String? = "  hello  "
    val cleaned = raw?.let { it.trim().uppercase() } ?: "(empty)"
    println(cleaned) // HELLO
}

run mit Konfiguration und Ergebnis

Kombinieren Sie die Einrichtung (über this) mit einem zurückgegebenen Wert in einem einzigen Block.

class Connection {
    var host: String = ""
    fun connect() = "connected to $host"
}
fun main() {
    val status = Connection().run {
        host = "localhost"
        connect()
    }
    println(status)
}

Anti-Pattern: let übermäßig verwenden

Verpacken Sie einfache Nullprüfungen nicht in let, wenn ein if verständlicher ist. Verwenden Sie Scope-Funktionen nur dort, wo sie tatsächlich helfen.

fun main() {
    val name: String? = "Ada"
    // OK
    name?.let { println(it.length) }
    // Equivalent and clearer for trivial cases:
    if (name != null) println(name.length)
}

Kurztest

Welche Scope-Funktion übergibt den Receiver als it und gibt das Lambda-Ergebnis zurück?

Zusammenfassung

let verwendet it und gibt das Lambda-Ergebnis zurück – ideal für null-sichere Umwandlungen und die Begrenzung des Gültigkeitsbereichs. run verwendet this und gibt das Lambda-Ergebnis zurück – ideal, wenn Sie viele Member des Receivers aufrufen. Beide eignen sich hervorragend für Code im Ausdrucksstil.

Häufig gestellte Fragen

Ist die Lektion „let und run: Umwandeln und scopen“ kostenlos?

Ja — der vollständige Text von „let und run: Umwandeln und scopen“ 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 „let und run: Umwandeln und scopen“?

Verwenden Sie let für null-sichere Umwandlungen und run für lokale Berechnungen. 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 „let und run: Umwandeln und scopen“?

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

  1. apply und with: Konfigurieren und zurückgeben
  2. let und run: Umwandeln und scopen
  3. also: Nebeneffekte ohne Änderung des Receivers
  4. Die passende Scope-Funktion auswählen: Entscheidungshilfe
← Zurück zu Kotlin Academy