0Pricing
Kotlin Academy · Lektion

also: Nebeneffekte ohne Änderung des Receivers

Verwenden Sie also für Logging, Debugging und Operationen, die ausschließlich Nebeneffekte erzeugen.

also: Nebeneffekte ohne Änderung des Receivers 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.

also auf einen Blick

also führt einen Block mit dem Receiver als it aus und gibt den Receiver unverändert zurück. Ideal für Seiteneffekte wie Protokollierung, Debugging und Validierung, ohne eine Aufrufkette zu unterbrechen.

Grundlagen von also

also { ... } führt einen Seiteneffekt aus und gibt anschließend denselben Wert zurück, sodass Aufrufe natürlich weiterverkettet werden können.

fun main() {
    val nums = listOf(1, 2, 3, 4)
        .also { println("input: $it") }
        .filter { it % 2 == 0 }
        .also { println("filtered: $it") }
    println(nums)
}

also für Protokollierung

Fügen Sie Protokollanweisungen mitten in eine Verarbeitungskette ein, ohne den Ablauf zu unterbrechen.

fun main() {
    val processed = "  Hello, Kotlin!  "
        .also { println("raw: '$it'") }
        .trim()
        .also { println("trimmed: '$it'") }
        .uppercase()
    println(processed)
}

also für Debugging

Verwenden Sie also, um während einer Überarbeitung den Zwischenzustand zu untersuchen – später können Sie es entfernen, ohne die Aufrufkette zu ändern.

fun main() {
    val sum = (1..5).toList()
        .also { println("list: $it") }
        .sum()
        .also { println("sum: $it") }
    println("final: $sum")
}

also und apply

apply verwendet this und eignet sich besser für Zuweisungen. also verwendet it und eignet sich besser für explizite Referenzen und Seiteneffekte.

class Counter {
    var value: Int = 0
}
fun main() {
    val c = Counter().apply { value = 10 } // uses this implicitly
    val d = Counter().also { it.value = 10 } // uses it explicitly
    println("${c.value} / ${d.value}")
}

also für Seiteneffekte bei der Initialisierung

Nützlich, wenn Sie während der Erstellung etwas mit einem Objekt tun müssen, das nicht das Setzen einer Property ist.

class Repository {
    val cache = mutableMapOf<String, String>()
    fun init() = println("Repository initialized")
}
fun main() {
    val r = Repository().also { it.init() }
    r.cache["key"] = "value"
    println(r.cache)
}

also gibt das Original zurück

Der Receiver wird unverändert weitergereicht – ideal zum Verketten.

fun main() {
    val len = "Hello".also { println("got: $it") }.length
    println(len) // 5
}

also für Validierung

Führen Sie Assertions mitten in einer Aufrufkette aus.

fun main() {
    val n = listOf(1, 2, 3, 4)
        .filter { it > 0 }
        .also { require(it.isNotEmpty()) { "must have positives" } }
        .sum()
    println(n)
}

also und let kombinieren

Verwenden Sie also für Seiteneffekte und let für Umwandlungen in derselben Verarbeitungskette.

fun main() {
    val raw: String? = "  42  "
    val n = raw
        ?.also { println("raw: '$it'") }
        ?.let { it.trim().toIntOrNull() }
        ?.also { println("parsed: $it") }
    println(n)
}

also zum Hinzufügen zu einer Collection

Fügen Sie ein erstelltes Objekt direkt in eine Liste ein.

class User(val name: String)
fun main() {
    val users = mutableListOf<User>()
    val ada = User("Ada").also { users.add(it) }
    val ben = User("Ben").also { users.add(it) }
    println(users.map { it.name })
}

Wann Sie also verwenden sollten

Verwenden Sie also, wenn Sie einen Seiteneffekt benötigen – etwa Protokollieren, Validieren oder Registrieren –, aber der ursprüngliche Wert weitergereicht werden soll.

fun main() {
    val total = listOf(10, 20, 30, 40, 50)
        .also { println("count: ${it.size}") }
        .filter { it >= 30 }
        .also { println("kept: $it") }
        .sum()
    println("total: $total")
}

Anti-Pattern: also für Neuzuweisungen

Verwenden Sie also nicht, wenn Sie tatsächlich eine Umwandlung benötigen – dafür sind let und run vorgesehen.

fun main() {
    val name = "ada"
    // BAD: also returns receiver, so upper is wrong
    // val upper = name.also { it.uppercase() } // upper == "ada"
    val upper = name.let { it.uppercase() }
    println(upper) // ADA
}

Kurztest

Welchen Wert gibt also nach der Ausführung seines Blocks zurück?

Zusammenfassung

also führt einen Block für Seiteneffekte mit it aus und gibt den Receiver zurück. Verwenden Sie es für Protokollierung, Debugging, Validierung und Registrierung – überall dort, wo Sie einen Einblick benötigen, ohne den Wert zu verändern. Für Umwandlungen verwenden Sie stattdessen let oder run.

Häufig gestellte Fragen

Ist die Lektion „also: Nebeneffekte ohne Änderung des Receivers“ kostenlos?

Ja — der vollständige Text von „also: Nebeneffekte ohne Änderung des Receivers“ 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 „also: Nebeneffekte ohne Änderung des Receivers“?

Verwenden Sie also für Logging, Debugging und Operationen, die ausschließlich Nebeneffekte erzeugen. 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 „also: Nebeneffekte ohne Änderung des Receivers“?

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