Kapitel 9. Funktionen mit mehreren bis einzelnen Ausdrücken

Diese Arbeit wurde mithilfe von KI übersetzt. Wir freuen uns über dein Feedback und deine Kommentare: translation-feedback@oreilly.com

Nat und Duncan lieben Kotlins Funktionsdefinitionen mit nur einem Ausdruck. Wann sollten wir diese Form verwenden, warum sollten wir sie bevorzugen und welche Kotlin-Features können wir nutzen, um mehr Funktionen zu einzelnen Ausdrücken zu machen?

Wie bei Java, ist der Code in einer Kotlin-Funktion normalerweise { innerhalb geschweifter Klammern } definiert und verwendetreturn, um das Ergebnis der Funktion zu definieren (es sei denn, es ist Unit, Kotlins Alias für void):

fun add(a: Int, b: Int): Int {
    return a + b
}

Wenn die oberste Ebene des Codes jedoch ein einziger Ausdruck ist, können wir optional den Ergebnistyp weglassen und den Code mit einem Ausdruck nach einem Gleichheitszeichen definieren:

fun addToo(a: Int, b: Int): Int = a + b

Wir können das so lesen: Das Ergebnis der Funktion add ist gleich a + b. Das ist sinnvoll für einen einzelnen Ausdruck und lässt sich auch gut lesen, wenn der Ausdruck selbst aus Unterausdrücken besteht:

fun max(a: Int, b: Int): Int =
    when {
        a > b -> a
        else -> b
    }

Diese Interpretation macht weniger Sinn für Funktionen, die Seiteneffekte haben, insbesondere solche, die E/A ausführen oder in veränderbare Zustände schreiben. Zum Beispiel:

fun printTwice(s: String): Unit = println("$s\n$s")

Wir können dies nicht als das Ergebnis von printTwice gleich println(..) ...

Get Von Java zu Kotlin now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.