In Kotlin beendet die return
-Anweisung die Ausführung einer Funktion und gibt, falls vorhanden, einen Wert an den Aufrufer zurück. Hier ist ein Beispiel für die Verwendung der return-Anweisung:
fun main() {
val result = sumOfNumbers(5, 3) // result = 8
println(result)
}
fun sumOfNumbers(number1: Int, number2: Int): Int {
return number1 + number2
}
Wenn eine Funktion die return-Anweisung verwendet, um einen Wert zurückzugeben, muss der Rückgabetyp der Funktion explizit angegeben werden. Der Rückgabetyp wird nach der Liste der Parameter und dem Doppelpunkt definiert. Im oben genannten Beispiel wurde der Rückgabetyp Int verwendet. Hier sind weitere Beispiele für verschiedene Rückgabetypen in Kotlin:
// Beispiel für Rückgabetyp Boolean
fun main() {
val result1 = isEven(10) // result1 = 'true'
println(result1)
val result2 = isEven(11) // result2 = 'false'
println(result2)
}
fun isEven(numberToCheck: Int): Boolean {
return numberToCheck % 2 == 0
}
// Beispiel für Rückgabetyp String
fun main() {
val output = userGreeting("Duffy")
println(output)
}
fun userGreeting(userName: String): String {
return "Hello, $userName!"
}
Rückgabetyp Unit
Eine Funktion, die kein Ergebnis liefert, gibt implizit einen Wert vom Typ Unit zurück. Dieser Typ ist vergleichbar mit dem void-Typ, der in einigen Programmiersprachen verwendet wird und angibt, dass keine Rückgabe stattfindet. Die folgende Funktion zeigt ein Beispiel dafür:
// Beispiel für Rückgabetyp Unit
fun main() {
helloWorld()
}
fun helloWorld() {
println("Hello World!")
}
Die oben gezeigte Funktion entspricht der folgenden Funktion:
// Beispiel für Rückgabetyp Unit
fun main() {
helloWorld()
}
fun helloWorld(): Unit { // Hier wurde explizit der Rückgabewert angegeben
println("Hello World!")
}
Auch in Fällen, bei denen eine Funktion den Rückgabetyp Unit
aufweist, kann trotzdem die return-Anweisung genutzt werden, um die Funktion vorzeitig abzubrechen, ohne einen Wert zurückzugeben. Dieser Ansatz ist vorteilhaft, um eine Funktion rechtzeitig zu beenden und unnötige Anweisungen zu vermeiden, was letztendlich die Leistung des Codes optimiert.
- Beispiel – Verlassen einer Funktion, wenn eine Bedingung erfüllt ist:
fun main() {
checkNumber(-5) // Ausgabe: Negative Zahl
checkNumber(3) // Ausgabe: Positive Zahl oder Null
}
fun checkNumber(numberToChek: Int) {
if (numberToChek < 0) {
println("$numberToChek is a negative number")
return
}
println("$numberToChek is a positive number")
}
- Beispiel – Verlassen einer Funktion innerhalb einer Schleife:
fun main() {
findFirstEven(intArrayOf(1, 3, 5, 7, 8, 9)) // Ausgabe: Die erste gerade Zahl ist 8
findFirstEven(intArrayOf(1, 3, 5, 7, 9)) // Ausgabe: Es wurden keine geraden Zahlen gefunden
}
fun findFirstEven(numbersToCheck: IntArray) {
for (number in numbersToCheck) {
if (number % 2 == 0) {
println("The first even number is $number")
return
}
}
println("No even numbers were found")
}