Conditions, boucles et fonctions
Ce que tu vas apprendre
- Choisir entre plusieurs cas avec
ifetwhen. - Répéter une action avec
foret les intervalles. - Écrire tes propres fonctions, avec des valeurs par défaut.
if : une expression
val minutes = 25
val rapide = if (minutes <= 30) "rapide" else "longue"
println("Recette $rapide")
En Kotlin, if peut produire une valeur : c'est une expression. Le résultat est rangé dans rapide.
Quand if sert de cette façon, la branche else est obligatoire. Chaque branche peut être un bloc entre accolades, et la dernière ligne du bloc donne la valeur.
when : plusieurs cas
val type = "dessert"
when (type) {
"entree" -> println("À servir froid")
"plat" -> println("À servir chaud")
"dessert", "gouter" -> println("Pour la fin du repas")
else -> println("Type inconnu")
}
when compare une valeur à chaque branche, dans l'ordre, et exécute la première qui correspond. Il remplace une longue suite de if.
On sépare plusieurs valeurs par une virgule. else couvre tous les autres cas.
Intervalles et when sans valeur
val minutes = 40
val duree = when {
minutes < 15 -> "express"
minutes in 15..45 -> "normale"
else -> "longue"
}
Un intervalle s'écrit 15..45 et inclut les deux bornes. in teste l'appartenance.
Sans valeur entre parenthèses, chaque branche est une condition booléenne. Quand when donne une valeur, il doit couvrir tous les cas, d'où le else.
for : répéter
val courses = listOf("farine", "oeufs", "lait")
for (article in courses) {
println("- $article")
}
for parcourt une liste, un tableau ou un intervalle. Ici, article prend chaque valeur à tour de rôle.
Pour compter, utilise un intervalle :
for (i in 1..3) print(i) // 123
for (i in 1..<3) print(i) // 12
for (i in 6 downTo 0 step 2) print(i) // 6420
1..<3 exclut la borne de fin. downTo compte à rebours et step règle le pas.
Pour avoir la position de chaque élément :
for ((index, article) in courses.withIndex()) {
println("$index : $article")
}
Écrire une fonction
fun total(prix: Double, quantite: Int): Double {
return prix * quantite
}
fun main() {
println(total(2.5, 4)) // 10.0
}
Une fonction regroupe des instructions sous un nom. Elle se déclare avec fun.
Chaque paramètre a un type, écrit après son nom. Le type retourné suit la parenthèse fermante, après :.
Une fonction qui ne renvoie rien renvoie en réalité Unit. On peut alors omettre le type et return.
fun afficherTitre(titre: String) {
println("== $titre ==")
}
Une fonction sur une ligne
Quand le corps tient en une expression, remplace les accolades par =.
fun total(prix: Double, quantite: Int) = prix * quantite
Le type de retour est alors déduit. Avec des accolades, il faut l'écrire, sauf pour Unit.
Valeurs par défaut et arguments nommés
fun afficher(recette: String, prefixe: String = "Info") {
println("[$prefixe] $recette")
}
fun main() {
afficher("Quiche") // [Info] Quiche
afficher(prefixe = "Nouveau", recette = "Flan")
}
Un paramètre avec une valeur par défaut peut être omis à l'appel. Un argument nommé s'écrit nom = valeur et peut venir dans n'importe quel ordre.
afficher(prefixe = "Nouveau", recette = "Flan") se comprend sans ouvrir la fonction.Sortir plus tôt avec return
fun verifier(nom: String): String {
if (nom.isEmpty()) {
return "Le nom est vide"
}
return "Recette : $nom"
}
return quitte immédiatement la fonction. Cela évite d'imbriquer les conditions les unes dans les autres.
À retenir
ifest une expression : il peut donner une valeur, avec unelseobligatoire dans ce cas.whenchoisit parmi plusieurs cas, accepte des virgules, des intervalles avecin, et une forme sans valeur.forparcourt une liste ou un intervalle :1..3,1..<3,downTo,step.- Une fonction se déclare avec
fun, des paramètres typés et un type de retour après:. - Une fonction d'une seule expression s'écrit avec
=. - Les valeurs par défaut et les arguments nommés évitent d'écrire plusieurs versions d'une même fonction.
Pour aller plus loin
Sources officielles
Ensuite
Découvrir Kotlin
Ce qu'est Kotlin, comment l'essayer dans le navigateur ou dans IntelliJ IDEA, puis les bases avec val, var, les types et les chaînes à gabarits.
La sécurité du null
Comment Kotlin évite les plantages liés à l'absence de valeur, avec les types nullables, le safe call, l'opérateur Elvis et le cast sûr.
- Projet
- Lignes de code
- Niveau
- Le quartier
- Appartement
- Kotlin
- Pièce
- 2/7
- Plan n°
- kotlin/02.conditions-boucles-fonctions