Die passende Scope-Funktion auswählen: Entscheidungshilfe
Wählen Sie anhand von Receiver, Rückgabetyp und Absicht die richtige Scope-Funktion aus.
Die passende Scope-Funktion auswählen: Entscheidungshilfe ist eine kostenlose Kotlin Academy-Lektion auf CoddyKit. Dies ist Lektion 4 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.
Fünf Funktionen, zwei Achsen
Kotlins Scope-Funktionen unterscheiden sich entlang zweier Achsen: Receiver-Stil (this oder it) und Rückgabewert (Receiver oder Lambda-Ergebnis). Wählen Sie die Funktion nach ihrer Absicht aus.
Die Entscheidungsmatrix
apply: this / Receiver. also: it / Receiver. run: this / Lambda. let: it / Lambda. with: this / Lambda (kein Receiver über Punktnotation).
apply: Konfigurieren und zurückgeben
Verwenden Sie apply für die Konfiguration von Objekten in einer Builder-artigen Aufrufkette.
class Config {
var host: String = ""
var port: Int = 0
}
fun main() {
val cfg = Config().apply {
host = "localhost"
port = 8080
}
println("${cfg.host}:${cfg.port}")
}also: Seiteneffekte
Verwenden Sie also, um zu protokollieren, zu validieren oder einen Seiteneffekt auszulösen, während der Receiver weitergereicht wird.
fun main() {
val items = listOf(1, 2, 3, 4)
.also { println("got ${it.size} items") }
.filter { it % 2 == 0 }
println(items)
}let: Umwandlung und null-sicherer Gültigkeitsbereich
Verwenden Sie let für null-sichere Umwandlungen oder um den Gültigkeitsbereich einer Variable zu begrenzen.
fun main() {
val name: String? = "Ada"
val length = name?.let { it.length } ?: 0
println(length)
}run: Zugriff auf mehrere Member mit Ergebnis
Verwenden Sie run, wenn Sie aus mehreren Membern des Receivers ein Ergebnis berechnen – dadurch entfallen it.-Präfixe.
class User(val name: String, val age: Int)
fun main() {
val description = User("Ada", 35).run {
"Name: $name, Age: $age"
}
println(description)
}with: Operationen auf einem vorhandenen Objekt gruppieren
Verwenden Sie with(obj) { ... }, wenn Sie die Aufrufstelle nicht selbst bestimmen (keine Punktkette), aber Operationen mit this gruppieren möchten.
class Builder {
val parts = mutableListOf<String>()
fun add(s: String) { parts.add(s) }
fun build(): String = parts.joinToString("-")
}
fun main() {
val b = Builder()
val result = with(b) {
add("hello")
add("kotlin")
build()
}
println(result) // hello-kotlin
}Nach der Absicht auswählen
Fragen Sie sich: (1) Benötige ich den Receiver zurück oder ein abgeleitetes Ergebnis? (2) Bevorzuge ich this oder it? Die Antworten bestimmen die passende Funktion.
class Box { var w = 0; var h = 0; fun area() = w * h }
fun main() {
// Configure and return Box -> apply
val box = Box().apply { w = 3; h = 4 }
// Compute area from box -> let or run
val area = box.let { it.area() }
// Side effect, keep box -> also
val sameBox = box.also { println("area=${it.area()}") }
println("$box / $area / $sameBox")
}Vergleich: apply und also
Beide geben den Receiver zurück. apply verwendet this und eignet sich gut zum Setzen von Feldern. also verwendet it und eignet sich gut, um explizit auf den Receiver zu verweisen, häufig in Seiteneffekten.
class Item { var name = "" }
fun main() {
val a = Item().apply { name = "apply" } // implicit this
val b = Item().also { it.name = "also" } // explicit it
println("${a.name} / ${b.name}")
}Vergleich: let und run
Beide geben das Lambda-Ergebnis zurück. let verwendet it und eignet sich gut für einfache Umwandlungen und Nullsicherheit. run verwendet this und eignet sich gut, wenn Sie viele Member aufrufen.
class Calculator(val a: Int, val b: Int) {
fun sum() = a + b
fun product() = a * b
}
fun main() {
val calc = Calculator(3, 4)
val s = calc.let { it.sum() } // simple
val combo = calc.run { "sum=${sum()} product=${product()}" } // multi-member
println("$s / $combo")
}Praktische Verarbeitungskette
Eine Verarbeitungskette aus der Praxis verwendet oft mehrere Scope-Funktionen gemeinsam.
class Request(var url: String = "", var headers: Map<String, String> = emptyMap())
fun main() {
val response = Request()
.apply {
url = "https://api.example.com"
headers = mapOf("Accept" to "json")
}
.also { println("request: ${it.url}") }
.let { req -> "GET ${req.url}" }
println(response)
}Kurzübersicht
Eine schnelle Referenz zur Auswahl des passenden Werkzeugs.
// apply: this, returns receiver — configure object
// also: it, returns receiver — side effects in chain
// let: it, returns lambda result — transform / null-safety
// run: this, returns lambda result — multi-member compute
// with: this, returns lambda result — group operations on existing obj
fun main() { println("Scope functions: pick by receiver style + return value") }Kurztest
Welche Scope-Funktion verwendet this als Receiver und gibt den Receiver selbst zurück?
Zusammenfassung
Wählen Sie die Scope-Funktion nach ihrer Absicht aus: apply (Konfiguration + sich selbst zurückgeben), also (Seiteneffekt + sich selbst zurückgeben), let (Umwandlung mit it), run (Umwandlung mit this), with (Operationen auf einem vorhandenen Objekt gruppieren). Zwei Achsen – Receiver-Stil und Rückgabewert – bestimmen die richtige Wahl.
Häufig gestellte Fragen
Ist die Lektion „Die passende Scope-Funktion auswählen: Entscheidungshilfe“ kostenlos?
Ja — der vollständige Text von „Die passende Scope-Funktion auswählen: Entscheidungshilfe“ 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 „Die passende Scope-Funktion auswählen: Entscheidungshilfe“?
Wählen Sie anhand von Receiver, Rückgabetyp und Absicht die richtige Scope-Funktion aus. 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 4 von 4.
Wie lange dauert die Lektion „Die passende Scope-Funktion auswählen: Entscheidungshilfe“?
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
- apply und with: Konfigurieren und zurückgeben
- let und run: Umwandeln und scopen
- also: Nebeneffekte ohne Änderung des Receivers
- Die passende Scope-Funktion auswählen: Entscheidungshilfe