- 5 mars 2025
[6/16] Switch / case
Introduction
Les conditions sont la base de tout programme en Swift. Après avoir vu les conditions if/else, il est temps de découvrir une autre manière de prendre des décisions en Swift : le switch/case. Imaginons une boîte magique où on peut trier les choses rapidement selon leurs catégories. C’est exactement ce que fait switch. Il permet de tester plusieurs conditions en même temps et d’exécuter du code en fonction de celles-ci.
Le swift / case est souvent utilisé lorsqu’on souhaite tester plusieurs conditions complémentaires en même temps. Par exemple, si on veut tester si un utilisateur a moins de 13 ans, ou si il a entre 13 et 18 ans, ou si il a plus de 18 ans. On pourrait alors utiliser 3 blocs if / else. Mais cela alourdit le code. Le switch case permet d’obtenir le même résultat plus rapidement.
Syntaxe de base
Voici à quoi ressemble un switch :
let valeur = 3
switch valeur {
case 1:
print("Valeur = 1")
case 2:
print("Valeur = 2")
case 3:
print("Valeur = 3")
default:
print("Valeur inconnue")
}
Dans cet exemple, on teste la valeur de la variable valeur. On souhaite vérifier si elle rentre dans l’une de ces 3 conditions :
La valeur est égale à 1
La valeur est égale à 2
La valeur est égale à 3
Sinon, on tombe dans le bloc default.
Dans notre exemple, c’est donc le bloc print("Valeur = 3") qui sera exécuté.
Un exemple concret : gestion d’un menu
Pour bien comprendre l’utilité du switch / case, imaginons une application pour livrer des pizzas. L’utilisateur choisir une pizza et votre application affiche le prix de la commande. Le switch / case permet d’afficher le bon message en fonction du choix de l’utilisateur :
let selection = "Margherita"
switch selection {
case "Margherita":
print("Prix : 8 €")
case "Pepperoni":
print("Prix : 10 €")
case "Quatre Fromages":
print("Prix : 11 €")
case "Hawaïenne":
print("Prix : 12 €")
case "Calzone":
print("Prix : 14 €")
default:
print("Pizza inconnue.")
}
Dans notre exemple, le programme affichera un prix de 8 €.
Combiner plusieurs cas dans un switch / case
En Swift, il est possible de préciser plusieurs cas possible dans un seul switch / case. En effet, il est possible que plusieurs conditions engendrent le même résultat. Supposons, par exemple, que plusieurs pizzas soient au même prix. Il serait dommage de devoir écrire "Prix : 12 €" à plusieurs reprises.
Pour cela, on peut combiner les cas ensemble :
let jour = "Samedi"
switch jour {
case "Samedi", "Dimanche":
print("C'est le week-end ! 🎉")
case "Lundi", "Mardi", "Mercredi", "Jeudi", "Vendredi":
print("C'est la semaine.")
default:
print("Jour inconnu.")
}
Ici, le résultat sera “C'est le week-end ! 🎉”.
Gérer des intervalles
Avec le bloc switch, il est aussi possible de tester si une valeur est contenue dans un intervalle. Par exemple, on souhaite savoir si une valeur est comprise entre 90 et 100 : nous n’allons évidemment pas écrire 10 case possibles pour toutes les valeurs entre 91 et 100 compris.
On peut utiliser l’opérateur … qui permet de créer un intervalle inclusif (les deux valeurs sont comprises). Par exemple, 3...10 représente l’intervalle de 3 à 10, tous deux compris. L’intervalle exclusif s’écrit ainsi : 3..<10 (3 est compris, mais pas 10).
Voici un exemple d’utilisation avec le bloc switch / case :
let score = 85
switch score {
case 90...100:
print("Note : A")
case 75..<90: // < exclut la borne supérieure
print("Note : B")
case 50..<75:
print("Note : C")
default:
print("Note : D")
}
Le résultat sera donc “Note : B”.
Comparaison entre if/else et switch
Jusqu’ici, vous pourriez vous demander : quelle est l’utilisé du bloc switch / case quand on a un bloc if / else à notre disposition. En effet, tous les blocs switch / case peuvent toujours être remplacés par un bloc if / else. Chaque bloc switch / case a son équivalent en if / else.
Mais le bloc switch / case a été introduit pour améliorer la lisibilité et simplifier le code.
Avec if/else :
let age = 25
if age < 18 {
print("Mineur")
} else if age <= 65 {
print("Adulte")
} else {
print("Sénior")
}
Avec switch :
let age = 25
switch age {
case 0..<18:
print("Mineur")
case 18...65:
print("Adulte")
default:
print("Sénior")
}
Conclusion
Le bloc switch / case permet d’écrire du code à plusieurs conditions de manière plus claire et efficace. Attention ! Cela ne veut pas dire que vous utiliserez toujours ce bloc au détriment du bloc if / else.