Précédemment nous avons vu les conditions avec if/else if/else, nous allons voir qu’il y a un autre moyen de faire des actions en fonction de la valeur d’une variable.
When
Avec un entier :
var nombreDeCookies = 10
if (nombreDeCookies == 10) {
//Une action
} else if (nombreDeCookies == 15) {
//Une autre action
} else if (nombreDeCookies == 20) {
//Une autre action
} else if (nombreDeCookies == 30) {
//Une autre action
} else {
//Action si la valeur ne rentre dans aucune des conditions suivantes
}
Cet enchainement est assez indigeste à lire, avec Kotlin il y a une manière plus simple de vérifier plusieurs valeurs d’une variable.
var nombreDeCookies = 10
when(nombreDeCookies) {
10 -> //Une Action sur une ligne
15 -> //Une Action sur une ligne
20 -> //Une Action sur une ligne
30 -> //Une Action sur une ligne
else -> //une action sur une ligne
}
var nombreDeCookies = 10
when(nombreDeCookies) {
10 ->{
// Une action
// sur plusieurs
// ligne
}
15 -> //Une Action sur une ligne
20 -> //Une Action sur une ligne
30 -> //Une Action sur une ligne
else -> //une action sur une ligne
}
Avec if/else nous pouvons aussi vérifier si la valeur d’une variable est dans une fourchette et effectuer une même action pour deux valeurs différentes.
var nombreDeCookies = 10
if (nombreDeCookies == 10) {
//Une action si le nombre de cookes est 10
} else if (nombreDeCookies < 15) {
//Une autre action si le nombre de cookies est superieur à 15
} else if (nombreDeCookies == 20) {
//Même action que pour == 10
} else {
//Autre action
}
La même chose en When :
var nombreDeCookies = 10 when(nombreDeCookies) { 10, 20 -> //Une Action sur une ligne in 0..15 -> //Une autre action si le nombre de cookies est inferieur à 15 else -> //une action sur une ligne}
Avec un String
var nom = "Zelda"
// Pour les entier on compare avec ==
//pour les String avec .equals() nous reviendront dessus plus tard.
if (nom.equals("Zelda")) {
//Une action
} else if (nom.equals("Lara Croft")) {
//Une autre action
} else if (nom.equals("Link") {
//Une autre action
} else {
//Autre action}
Équivalent en When :
var nom = "Zelda"
when(nom) {
in "Zelda" -> println("Le nom est Zelda")
in "Link" -> println("Le nom est Link")
in "Lara Croft" -> println("Le nom est Lara Croft")
else -> println("Autre")
}
Avec un Booléen
var isAGoodBoy = true
when(isAGoodBoy) {
true -> println("Vrai")
false -> println("Faux")
}