Dans cette fiche :
Une énumération, ou enum pour les intimes, est un modèle de données qui permet de définir un type de données qui comporte une liste déterminée de valeurs possibles. Chaque valeur est appelée un cas.
Par exemple, on pourrait avoir un type Couleur qui accepte les cas rouge, bleu et jaune.
Pour définir une énumération dans le langage Swift, on utilise le mot-clé enum.
enum Couleur {
case rouge
case bleu
case jaune
}
ou, plus simplement :
enum Couleur {
case rouge, bleu, jaune
}
Les cas possibles de l'énumération seront utilisés un peu comme les propriétés d'une classe.
let couleur = Couleur.bleu
Grâce aux valeurs déterminées de l'énumération, les valeurs acceptées pour un paramètre seront connues dès la compilation.
Il devient impossible de passer une valeur invalide.
/**
Initialise un message selon une couleur.
- parameters:
- couleur: Couleur pour laquelle le message doit être initialisé.
- Returns: Message.
*/
func message(couleur: Couleur) -> String {
switch couleur {
case .rouge:
return "La couleur est rouge."
case .bleu:
return "La couleur est bleu."
case .jaune:
return "La couleur est jaune."
}
}
...
Text(message(Couleur.bleu)) // le compilateur s'assure que la couleur passée en paramètre est un des cas de l'énumération
...
Il est possible de fournir, pour chaque cas de l'énumération, une valeur brute qui pourra être retrouvée à l'aide de .rawValue.
Les valeurs brutes doivent être uniques dans l'énumération.
Le type de la valeur brute sera spécifié à côté du nom de l'énumération.
enum Couleur: String {
case rouge = "Rouge"
case bleu = "Bleu"
case jaune = "Jaune"
}
Pour référer à la valeur brute :
Text(Couleur.bleu.rawValue) // affiche Bleu
Si vous ne fournissez pas de valeurs brutes aux cas de l'énumération, une valeur sera automatiquement fournie par Swift selon le type déclaré à côté de l'énumération.
Avec un String, le .rawValue fournira exactement le mot-clé qui identifie le cas.
enum Couleur: String {
case rouge
case bleu
case jaune
}
...
var couleur = Couleur.rouge
...
Text(couleur.rawValue) // affiche rouge
Et avec un type Int, on aura l'index du cas, numéroté à partir de 0.
enum Couleur: Int {
case rouge
case bleu
case jaune
}
...
var couleur = Couleur.rouge
...
Text("\(couleur.rawValue)") // affiche 0
« Enumerations ». Swift. https://docs.swift.org/swift-book/LanguageGuide/Enumerations.html
« POO : les énumérations ». Swiftement. https://www.swiftement.fr/2022/01/poo-les-enumerations/
▼Publicité
Site fièrement hébergé chez A2 Hosting.