Instruction switch

Exécutez différents blocs de code en fonction de la valeur d'une variable.

Voir sur YouTube

L'instruction switch en Swift est une structure de contrôle qui permet de comparer une valeur à plusieurs cas possibles et d'exécuter le code correspondant au premier cas qui correspond. Elle est souvent utilisée comme une alternative plus lisible et plus puissante aux multiples conditions if-else if-else.

Syntaxe de Base du switch

L'instruction switch compare une valeur à différents cas (case). Chaque case est comparé à la valeur, et si un match est trouvé, le code associé à ce cas est exécuté.

Syntaxe :

switch value {
case pattern1:
    // Code à exécuter si value correspond à pattern1
case pattern2:
    // Code à exécuter si value correspond à pattern2
default:
    // Code à exécuter si value ne correspond à aucun pattern
}
  • value : La valeur que vous souhaitez comparer.
  • pattern1, pattern2 : Les valeurs ou les expressions auxquelles value est comparée.
  • default : Le bloc de code qui est exécuté si aucune des valeurs spécifiées ne correspond. Ce bloc est obligatoire, sauf si tous les cas possibles sont couverts.

Exemple Simple

Voici un exemple simple qui utilise switch pour comparer un nombre entier.

let dayOfWeek = 3
switch dayOfWeek {
case 1:
    print("Lundi")
case 2:
    print("Mardi")
case 3:
    print("Mercredi")
case 4:
    print("Jeudi")
case 5:
    print("Vendredi")
case 6:
    print("Samedi")
case 7:
    print("Dimanche")
default:
    print("Jour inconnu")
}
// Affiche : "Mercredi"

Dans cet exemple, le switch compare la valeur de dayOfWeek à chaque case. Comme dayOfWeek vaut 3, le code associé au case 3 est exécuté.

Caractéristiques Importantes du switch en Swift

Pas de Fallthrough Automatique

Contrairement à certains autres langages de programmation, Swift n'effectue pas de "fallthrough" automatique entre les cas dans un switch. Cela signifie qu'une fois qu'un case correspond et que son code est exécuté, l'exécution sort automatiquement du switch. Si vous voulez un fallthrough explicite, vous devez l'indiquer en utilisant le mot-clé fallthrough.

let number = 3
switch number {
case 3:
    print("Trois")
    fallthrough
case 4:
    print("Quatre")
default:
    print("Autre nombre")
}
// Affiche :
// Trois
// Quatre

Utilisation des Plages de Valeurs

Swift permet d'utiliser des plages de valeurs dans un switch, ce qui le rend très flexible.

let score = 85
switch score {
case 0..<50:
    print("Échec")
case 50..<75:
    print("Passable")
case 75..<90:
    print("Bien")
case 90...100:
    print("Excellent")
default:
    print("Score invalide")
}
// Affiche : "Bien"

Dans cet exemple, score est comparé à différentes plages de valeurs.

Utilisation de Tuples

Swift permet également de comparer des tuples dans un switch. Cela est utile pour évaluer plusieurs valeurs ensemble.

let point = (x: 0, y: 0)
switch point {
case (0, 0):
    print("Origine")
case (_, 0):
    print("Sur l'axe des X")
case (0, _):
    print("Sur l'axe des Y")
case (-2...2, -2...2):
    print("Proche de l'origine")
default:
    print("Ailleurs")
}
// Affiche : "Origine"

Dans cet exemple, le switch vérifie les valeurs du tuple (x, y) et exécute le code associé au premier case correspondant.

Utilisation de where dans les Cas

Swift permet d'ajouter des conditions supplémentaires avec le mot-clé where pour affiner encore plus les cas.

let age = 25
switch age {
case let x where x < 18:
    print("Mineur")
case let x where x >= 18 && x < 65:
    print("Adulte")
case let x where x >= 65:
    print("Senior")
default:
    print("Âge non valide")
}
// Affiche : "Adulte"

Le Cas default

Le cas default est utilisé pour capturer toutes les valeurs qui ne correspondent à aucun des autres cas spécifiés. Il est obligatoire si tous les cas possibles ne sont pas explicitement couverts.

Si vous êtes sûr de couvrir toutes les valeurs possibles avec vos cas, vous pouvez omettre le default.

let fruit = "Banane"
switch fruit {
case "Pomme":
    print("C'est une pomme.")
case "Banane":
    print("C'est une banane.")
case "Orange":
    print("C'est une orange.")
default:
    print("Fruit inconnu.")
}
// Affiche : "C'est une banane."

Exemple Avancé : Combiner Plusieurs Cas

Vous pouvez combiner plusieurs valeurs dans un même case en utilisant des virgules pour exécuter le même bloc de code pour différentes valeurs.

let letter = "a"
switch letter {
case "a", "e", "i", "o", "u":
    print("C'est une voyelle.")
default:
    print("C'est une consonne.")
}
// Affiche : "C'est une voyelle."

Points Clés à Retenir

  • Pas de Fallthrough Automatique : En Swift, vous n'avez pas besoin de vous soucier du fallthrough, sauf si vous le spécifiez explicitement.
  • Cas Puissants et Flexibles : Les cas dans un switch peuvent être des valeurs spécifiques, des plages, des tuples, ou même des expressions conditionnelles avec where.
  • Le Cas default : Sert de filet de sécurité pour capturer toutes les autres valeurs non spécifiées.