Wie werden Funktionen in Kotlin beschrieben?
sobes.tech KI
Antwort von AI
Funktionen werden mit dem Schlüsselwort fun deklariert, gefolgt vom Funktionsnamen, einer Parameterliste in Klammern (optional), einem Doppelpunkt und dem Rückgabetyp (optional). Der Funktionskörper befindet sich in geschweiften Klammern. Wenn der Rückgabetyp weggelassen wird, gibt die Funktion Unit zurück (entspricht void in anderen Sprachen).
// Funktion ohne Parameter und Rückgabewert
fun greet() {
println("Hello!")
}
// Funktion mit Parametern
fun add(x: Int, y: Int): Int {
return x + y
}
// Funktion mit einem Ausdruck (Kurzschreibweise)
fun multiply(a: Int, b: Int) = a * b
Funktionsparameter werden im Format NameParameter: Typ deklariert. Es können Standardwerte für Parameter angegeben werden.
fun sendMessage(message: String, sender: String = "Unknown") {
println("$sender: $message")
}
Funktionen können auf oberster Ebene der Datei oder als Mitglieder von Klassen, Objekten oder Schnittstellen deklariert werden.
-
Top-Level-Funktionen: Werden außerhalb von Klassen deklariert.
fun calculateArea(radius: Double): Double { return Math.PI * radius * radius } -
Mitgliedsfunktionen: Werden innerhalb von Klassen deklariert.
class MyClass { fun doSomething() { println("Doing something.") } } -
Erweiterungsfunktionen: Ermöglichen es, Funktionen zu bestehenden Klassen hinzuzufügen, ohne deren Quellcode zu ändern.
fun String.reverseAndUpperCase(): String { return this.reversed().toUpperCase() }
Lambda-Ausdrücke und anonyme Funktionen sind funktionale Literale, die als Argumente übergeben oder Variablen zugewiesen werden können.
val sum: (Int, Int) -> Int = { x, y -> x + y }
val greeting = { name: String -> "Hello, $name!" }
Höherordentliche Funktionen nehmen Funktionen als Parameter oder geben Funktionen zurück.
fun operate(a: Int, b: Int, operation: (Int, Int) -> Int): Int {
return operation(a, b)
}
val result = operate(5, 3, { x, y -> x * y }) // result = 15
Funktionenüberladung (verschiedene Funktionen mit demselben Namen, aber unterschiedlichen Signaturen) wird automatisch unterstützt.
fun printInfo(name: String) {
println("Name: $name")
}
fun printInfo(age: Int) {
println("Age: $age")
}