Formation PUB900 : Développer une application pour iPhone avec SwiftUI, H-2024 Quelques éléments du langage Swift

2.2 Les énumérations


Dans cette fiche :

enum

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.

Swift

enum Couleur {
  case rouge
  case bleu
  case jaune
}

ou, plus simplement :

Swift

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.

Swift

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.

SwiftUI

/**
 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

...

Valeur brute des cas de l'énumération (Raw value)

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.

Swift

enum Couleur: String {
  case rouge = "Rouge"
  case bleu = "Bleu"
  case jaune = "Jaune"
}

Pour référer à la valeur brute :

SwiftUI

Text(Couleur.bleu.rawValue)   // affiche Bleu

Valeurs brutes inférées

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.

SwiftUI

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.

SwiftUI

enum Couleur: Int {
  case rouge
  case bleu
  case jaune
}
...
var couleur = Couleur.rouge
...
Text("\(couleur.rawValue)")   // affiche 0

Pour plus d'information

« 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é

Veuillez noter que le contenu de cette fiche vous est partagé à titre gracieux, au meilleur de mes connaissances et sans aucune garantie.
Merci de partager !

Site fièrement hébergé chez A2 Hosting.

Soumettre