with
Gruppieren Sie Operationen
with ist eine kostenlose Kotlin 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 Kotlin Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Kotlin Academy-Kurs umfasst insgesamt 4 Lektionen.
Die with-Funktion
with ist eine Scope-Funktion, die ein Objekt als Argument entgegennimmt (nicht als Receiver eines Aufrufs) und einen Block mit diesem Objekt als this ausführt. Sie gibt das Lambda-Ergebnis zurück.
Grundlegende Verwendung von with
Sie übergeben das Objekt an with und greifen innerhalb des Blocks direkt auf seine Member zu.
fun main() {
val name = "Kotlin"
val description = with(name) {
"$this has $length characters"
}
println(description)
}Mehrere Operationen gruppieren
with ist besonders nützlich, wenn Sie mehrere Methoden auf demselben Objekt aufrufen oder mehrere seiner Eigenschaften lesen müssen. Dadurch vermeiden Sie, den Objektnamen zu wiederholen.
fun main() {
val sb = StringBuilder()
with(sb) {
append("Line 1\n")
append("Line 2\n")
append("Line 3")
}
println(sb)
}with verwendet this
Wie run und apply stellt with das Objekt als this bereit, sodass der Zugriff auf Member kein Präfix benötigt.
data class Rectangle(val width: Int, val height: Int)
fun main() {
val rect = Rectangle(4, 5)
val area = with(rect) {
width * height
}
println("Area: $area")
}with gibt das Lambda-Ergebnis zurück
Der Wert des letzten Ausdrucks im Block wird zum Ergebnis von with, genau wie bei run.
fun main() {
val list = listOf(1, 2, 3, 4, 5)
val summary = with(list) {
"Size=$size, First=${first()}, Last=${last()}"
}
println(summary)
}with und run
with(obj) { ... } und obj.run { ... } tun fast dasselbe. Der Unterschied liegt in der Syntax:
runist eine für das Objekt aufgerufene Erweiterung und funktioniert daher gut mit Safe Calls.withnimmt das Objekt als Argument entgegen und liest sich natürlich wie „mit diesem Objekt arbeiten und …“.
fun main() {
val s = "data"
val a = with(s) { uppercase() }
val b = s.run { uppercase() }
println("$a $b")
}with ist nicht für Nullable-Werte geeignet
Da das Objekt als Argument übergeben wird, lässt sich with nicht gut mit dem Safe-Call-Operator kombinieren. Für nullable Receiver sollten Sie obj?.run { } oder obj?.let { } bevorzugen.
fun main() {
val name: String? = "Eve"
name?.run { println("Hello $this") }
println("with is awkward for nullables")
}Lesen und Berechnen kombinieren
Ein häufiges Muster besteht darin, mehrere Eigenschaften zu lesen und ein einzelnes Ergebnis zu berechnen – alles innerhalb eines übersichtlichen Blocks.
data class Order(val items: Int, val pricePerItem: Int)
fun main() {
val order = Order(3, 20)
val total = with(order) {
items * pricePerItem
}
println("Total: $total")
}Strings mit with erstellen
In Kombination mit buildString oder StringBuilder ermöglicht with übersichtlichen Code zum Erstellen von Strings ohne Präfixe.
fun main() {
val report = StringBuilder()
with(report) {
appendLine("Report")
appendLine("======")
appendLine("All good")
}
print(report)
}with für eine Collection
Sie können mehrere Collection-Funktionen für dieselbe Liste aufrufen, ohne ihren Namen zu wiederholen.
fun main() {
val numbers = listOf(10, 20, 30)
with(numbers) {
println("Sum: ${sum()}")
println("Max: ${max()}")
println("Average: ${average()}")
}
}Wann Sie with verwenden sollten
Wählen Sie with, wenn Sie ein nicht-nullbares Objekt haben und eine Gruppe von Operationen darauf ausführen möchten, optional auch mit Rückgabe eines Ergebnisses. Damit signalisieren Sie: „Ich arbeite eine Weile mit diesem Objekt“.
Kurzer Check
Wie erhält with sein Objekt?
Zusammenfassung
with gruppiert Operationen für ein einzelnes, nicht-nullbares Objekt, das als Argument übergeben wird, stellt es als this bereit und gibt das Lambda-Ergebnis zurück. Die Funktion ähnelt run, verwendet aber eine Argument-Syntax. Als Nächstes lernen Sie, wie Sie für jede Situation die richtige Scope-Funktion auswählen.
Häufig gestellte Fragen
Ist die Lektion „with“ kostenlos?
Ja — der vollständige Text von „with“ 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 „with“?
Gruppieren Sie Operationen 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 3 von 4.
Wie lange dauert die Lektion „with“?
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.