|
|
Funktionen umfassen ein oder mehrere Anweisungen quasi zu einem Befehl zusammen, der von verschiedenen Stellen im Programm aufgerufen werden kann.
- Eine Funktion wird mit dem Schlüsselwort fun eingeleitet.
- Es folgt der Funktionsname.
- Als nächstes gibt es runde Klammern, die unter Umständen Parameter für die Funktion enthalten.
- Falls die Funktion einen Rückgabewert hat, wird nach einem Doppelpunkt der Typname aufgeführt.
- Es folgt in geschweiften Klammern der Block der Anweisungen, die bei Aufruf der Funktion ausgeführt werden sollen.
- Falls die Funktion einen Wert zurückgibt, enthält sie eine return-Anweisung, die einen Wert an den Aufrufer zurückgibt.
fun main() { printline() println("Umrahmter Text") printline() } fun printline() { for (i in 0..39) { print('-') } println() }
Parameter
Das Hauptprogramm kann einer Funktion auch Parameter übergeben. Hier wurde die Funktion printline ein zweites Mal erstellt, jedoch mit einem Parameter. Funktionen dürfen durchaus den gleichen Namen tragen, sofern sie sich in den Parametern unterscheiden. Der Compiler findet dann heraus, welche gemeint ist. Im Beispiel ruft der erste Aufruf die Funktion mit dem ganzzahligen Parameter, der zweite Aufruf die Funktion ohne Parameter.Wenn sich Funktionen nur anhand des Parameters unterscheiden, spricht man vom Überladen.
fun main() { var text = "Umrahmter Text" printline(text.length) println(text) printline() } fun printline() { for (i in 0..39) { print('-') } println() } fun printline(anzahl : Int) { for (i in 1..anzahl) { print('-') } println() }
Rückgabe
Eine mathematische Funktion liefert genau einen Wert zurück. Das können Sie in Kotlin nachbilden, indem in der Funktion der Befehl return einen Wert bezeichnet, der das Ergebnis der Funktionsberechnung darstellt.Am Kopf der Funktion geben Sie hinter der Klammer nach einem Doppelpunkt den Typ an, den die Funktion zurückgeben soll.
Beim Aufruf wird eine Funktion zu einem Ausdruck und kann darum rechts des Zuweisungsoperators stehen. Das folgende Beispiel zeigt den Aufruf und die Umsetzung einer Summe der Zahlen zwischen 0 und der übergebenen Zahl.
fun main() { val endsumme = 10 var a = summe(endsumme) println("Summe von 1 bis $endsumme: " + a) } fun summe(n : Int) : Int { var s = 0 for (i in 0..n) { s += i } return s }
Vorgabeparameter
Parameter können mit Default-Werten vergeben werden. Beispielsweise kann die Funktion summe zwei Parameter von und bis erhalten. Dabei wird für von der Standardwert 1 vorgegeben.fun summe(von: Int = 1, bis : Int) : Int { var s = 0 for (i in von..bis) { s += i } return s }Ruft man die Funktion mit nur einem Parameter aufgerufen, wird der noch nicht vorbelegte Parameter mit dem Aufrufparameter belegt. Werden beide Parameter angegeben, wird die Vorgabe ignoriert.
val endsumme = 10 val start = 8 var a = summe(endsumme) // 55 var b = summe(start, endsumme) // 27Im Beispiel wird die Variable a 55 enthalten, die Variable b dagegen 27.
Ohne geschweifte Klammern
Der Block in geschweiften Klammern kann durch einen einfachen Ausdruck ersetzt werden.fun quadrat(x: Int) = x * x
Lambda
Lambda ist eine anonyme Funktion, also eine Funktion ohne Namen. Die Konsequenz ist, dass sie nicht mehrfach aufgerufen werden kann. Lambda wird durch geschweifte Klammern umgeben.val summe = {a: Int, b: Int -> a + b}