In dit artikel leert u over functies; welke functies zijn, de syntaxis en hoe je een gebruikersfunctie in Kotlin kunt maken.
Bij het programmeren is functie een groep verwante instructies die een specifieke taak uitvoeren.
Functies worden gebruikt om een groot programma op te splitsen in kleinere en modulaire brokken. U moet bijvoorbeeld een cirkel maken en kleuren op basis van invoer van de gebruiker. U kunt twee functies maken om dit probleem op te lossen:
createCircle()
FunctiecolorCircle()
Functie
Door een complex programma op te splitsen in kleinere onderdelen, wordt ons programma overzichtelijker en beter beheersbaar.
Bovendien vermijdt het herhaling en maakt het code herbruikbaar.
Soorten functies
Afhankelijk van of een functie door de gebruiker is gedefinieerd of beschikbaar is in de standaardbibliotheek, zijn er twee soorten functies:
- Kotlin Standard Library-functie
- Door de gebruiker gedefinieerde functies
Kotlin Standard Library-functie
De standaard bibliotheekfuncties zijn ingebouwde functies in Kotlin die direct beschikbaar zijn voor gebruik. Bijvoorbeeld,
print()
is een bibliotheekfunctie die berichten afdrukt naar de standaard uitvoerstroom (monitor).sqrt()
geeft de vierkantswortel van een getal terug (Double
waarde)
fun main(args: Array) ( var number = 5.5 print("Result = $(Math.sqrt(number))") )
Wanneer u het programma uitvoert, is de uitvoer:
Resultaat = 2.345207879911715
Hier is een link naar de Kotlin-standaardbibliotheek die u kunt verkennen.
Door de gebruiker gedefinieerde functies
Zoals gezegd kunt u zelf functies aanmaken. Dergelijke functies worden door de gebruiker gedefinieerde functies genoemd.
Hoe maak je een door de gebruiker gedefinieerde functie in Kotlin?
Voordat u een functie kunt gebruiken (aanroepen), moet u deze eerst definiëren.
Hier leest u hoe u een functie in Kotlin kunt definiëren:
fun callMe () (// functie body)
Om een functie in Kotlin te definiëren, wordt een fun
trefwoord gebruikt. Dan komt de naam van de functie (identifier). Hier is de naam van de functie callMe.
In het bovenstaande programma is het haakje ( )
leeg. Dit betekent dat deze functie geen enkel argument accepteert. Later in dit artikel leert u over argumenten.
De codes tussen accolades ( )
zijn de hoofdtekst van de functie.
Hoe een functie aanroepen?
U moet de functie aanroepen om codes in de hoofdtekst van de functie uit te voeren. Hier is hoe:
bel mij()
Deze instructie roept de callMe()
functie aan die eerder is gedeclareerd.
Voorbeeld: eenvoudig functieprogramma
fun callMe() ( println("Printing from callMe() function.") println("This is cool (still printing from inside).") ) fun main(args: Array) ( callMe() println("Printing outside from callMe() function.") )
Wanneer u het programma uitvoert, is de uitvoer:
Afdrukken vanuit de functie callMe (). Dit is cool (nog steeds printen van binnenuit). Buiten afdrukken vanuit de functie callMe ().
De callMe()
functie in de bovenstaande code accepteert geen enkel argument.
Ook retourneert de functie geen enkele waarde (retourtype is Unit
).
Laten we een ander functievoorbeeld nemen. Deze functie accepteert argumenten en retourneert ook een waarde.
Voorbeeld: voeg twee nummers toe met behulp van de functie
fun addNumbers(n1: Double, n2: Double): Int ( val sum = n1 + n2 val sumInteger = sum.toInt() return sumInteger ) fun main(args: Array) ( val number1 = 12.2 val number2 = 3.4 val result: Int result = addNumbers(number1, number2) println("result = $result") )
Wanneer u het programma uitvoert, is de uitvoer:
resultaat = 15
Hoe werken functies met argumenten en retourwaarde?
Hier worden twee argumenten nummer1 en nummer2 van het type Double
doorgegeven aan de addNumbers()
functie tijdens de functieaanroep. Deze argumenten worden feitelijke argumenten genoemd.
result = addNumbers (getal1, getal2)
De parameters n1 en n2 accepteren de doorgegeven argumenten (in de functiedefinitie). Deze argumenten worden formele argumenten (of parameters) genoemd.
In Kotlin, arguments are separated using commas. Also, the type of the formal argument must be explicitly typed.
Note that, the data type of actual and formal arguments should match, i.e., the data type of first actual argument should match the type of first formal argument. Similarly, the type of second actual argument must match the type of second formal argument and so on.
Here,
return sumInteger
is the return statement. This code terminates the addNumbers()
function, and control of the program jumps to the main()
function.
In the program, sumInteger is returned from addNumbers()
function. This value is assigned to the variable result.
Notice,
- both sumInteger and result are of type
Int
. - the return type of the function is specified in the function definition.
// return type is Int fun addNumbers(n1: Double, n2: Double): Int (… )
If the function doesn't return any value, its return type is Unit
. It is optional to specify the return type in the function definition if the return type is Unit
.
Example: Display Name by Using Function
fun main(args: Array) ( println(getName("John", "Doe")) ) fun getName(firstName: String, lastName: String): String = "$firstName $lastName"
When you run the program, the output will be:
John Doe
Here, the getName()
function takes two String
arguments, and returns a String
.
You can omit the curly braces ( )
of the function body and specify the body after =
symbol if the function returns a single expression (like above example).
It is optional to explicitly declare the return type in such case because the return type can be inferred by the compiler. In the above example, you can replace
fun getName (firstName: String, lastName: String): String = "$ firstName $ lastName"
met
fun getName (firstName: String, lastName: String) = "$ firstName $ lastName"
Dit is slechts de korte introductie van functies in Kotlin. Aanbevolen artikelen met betrekking tot functies:
- Kotlin inline-functies
- Kotlin infix-functies
- Kotlin-functiebereik
- Kotlin Default en Named Arguments
- Kotlin-recursie
- Kotlin Tail Recursieve functie
- Kotlin-uitbreidingsfunctie
- Kotlin High-Order Functies & Lambda's