Fonctions en Kotlin
Introduction aux Fonctions
Les fonctions sont un élément fondamental de n'importe quel programme Kotlin. Elles représentent des blocs de code réutilisables qui peuvent être appelés à divers endroits dans le programme. Il est important de noter qu'un programme Kotlin doit impérativement commencer avec la fonction main()
, sans quoi une erreur se produira. Pour définir une fonction en Kotlin, on utilise le mot-clé fun
, mais il existe également plusieurs fonctions prédéfinies comme println
et print
.
La Fonction Principale
La fonction main()
constitue le point d'entrée d'un programme écrit en Kotlin et elle est indispensable. La fonction main()
doit englober le code du programme, et elle n’est pas appelée par d’autres fonctions. Le code doit se trouver entre les accolades {} de la fonction main()
.
fun main() { println("Bonjour le monde")}
Création de Fonctions en Kotlin
Les fonctions définies par l'utilisateur débutent par le mot-clé fun
, suivent du nom de la fonction, des paramètres (le cas échéant), et enfin, du corps de la fonction qui est enfermé entre des accolades.
fun nomDeFonction(arguments): typeDeRetour {
corps
return statement
}
Les Paramètres
Les paramètres représentent les données transmises à la fonction. Chaque paramètre doit avoir un nom et un type de données. Un deux-points : sépare le nom du paramètre de son type de données. Les paramètres sont séparés par une virgule , .
fun nomDeFonction(paramNom: typeDeDonnee, paramNom2: typeDeDonnee) {
corps
}
fun exemple(num1: Int, num2: Int) { println(num1 + num2) }
Appel de Fonction avec Paramètres
Lors de l'appel d'une fonction, les arguments peuvent être placés selon leur position respective ou précisés par leur nom. Par exemple, si on précise les noms, l'ordre dans lequel ils figurent n’a pas d'importance.
fun main() {
println(exemple(3, 5))
println(exemple(numNom2=5, numNom1=3))
}
Valeurs par Défaut pour les Paramètres
Les paramètres peuvent avoir des valeurs par défaut, définies avec le signe égal =.
fun parDefaut(nom: String = "Kotlin") { println("Bonjour $nom") }
fun main() { parDefaut("Java") } // Affiche: Bonjour Java
Type de Retour
Le type de retour indique le type de valeur renvoyée par la fonction. L'inclusion du type de retour est optionnelle et s'écrit après la parenthèse et un deux-points : . Par défaut, la valeur de retour est de type Unit
, ce qui signifie qu'il n'y a pas de valeur retournée.
fun exemple(nom: String): String { return "Bonjour " + nom }
fun main() { print(exemple("Tom")) } // Affiche: Bonjour Tom
Corps de Fonction
Le corps de la fonction contient le code à exécuter et doit être placé entre des accolades {}. Il doit être indenté, sauf pour une fonction de ligne unique, où l'accolade ouvrante { se trouve à la fin de l'en-tête de la fonction et l'accolade fermante } se trouve après la dernière ligne de code du corps.
fun nomDeFonction(param) {
ligneCorps2
}
Instruction de Retour
Si la fonction utilise une instruction de retour, elle doit également déclarer un type de retour. L'instruction de retour est instaurée avec le mot-clé return
. Toute ligne de code suivant l'instruction de retour ne sera pas exécutée.
fun addition(num1: Int, num2: Int): Int {
var somme = num1 + num2 // Instruction de retour
return somme // println ne sera pas exécuté
println("Bien joué")
}
Fonction de Ligne Unique
Une fonction de ligne unique peut être écrite si elle a une seule expression. On peut simplifier le code en enlevant les accolades {} et l'instruction de retour, et en utilisant un égal =.
fun surface(cote1: Int, cote2: Int): Int = cote1 * cote2
Littéraux de Fonction
Une fonction devient un littéral de fonction lorsqu'elle est assignée à une variable. On distingue deux types de littéraux de fonction : les "expressions lambda" et les "fonctions anonymes".
Expressions Lambda
Une expression lambda est une fonction compacte entourée d'accolades {}. L'instruction retour est remplacée par ->. Il n'est pas obligatoire d'écrire le type de retour car le compilateur peut l'inférer de l'interface de type.
fun main() {
// Expression Lambda
val additionner = {num1: Int, num2: Int -> num1 + num2}
// Exécution
println(additionner(1, 2))
} // Affiche: 3
Fonction Anonyme
Une fonction anonyme est assignée à une variable et le fun
suivant le signe égal = indique qu'elle n'a pas de nom.
Conclusion
Il existe plusieurs manières de définir et d'utiliser des fonctions en Kotlin, que ce soit à travers des fonctions classiques, des expressions lambda, ou des fonctions anonymes. Chaque méthode a ses propres utilisations et avantages.