0Pricing
Kotlin Academy · Lektion

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:

  • run ist eine für das Objekt aufgerufene Erweiterung und funktioniert daher gut mit Safe Calls.
  • with nimmt 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.

Alle Lektionen in diesem Kurs

  1. let und run
  2. apply und also
  3. with
  4. Die richtige Funktion auswählen
← Zurück zu Kotlin Academy