Logo de Swift en orange sur fond gris qui sert de hero de présentation de la formation sur les fondamentaux de Swift

Enum

Comme son nom l’indique, un enum permet d’énumérer des cas. Ça fonctionne un peu comme une struct dans le sens où c’est un type que tu crées sur mesure, mais avec une différence importante : un enum regroupe des valeurs fixes que tu définis à l’avance. On l’utilise souvent pour catégoriser des données : par exemple, des familles de catégories pour une donnée spécifique, des types d’erreurs, ou d’autres ensembles limités de choix. C’est une notion très simple à comprendre, et elle te sera très utile pour organiser et sécuriser ton code.

Introduction


enum House {
    case Gryffondor, Poufsouffle, Serdaigle, Serpentard
}

var studentHouse: House = .Gryffondor

switch studentHouse {
case .Gryffondor:
    print("Bienvenue à Gryffondor!")
case .Poufsouffle:
    print("Bienvenue à Poufsouffle!")
case .Serdaigle:
    print("Bienvenue à Serdaigle!")
case .Serpentard:
    print("Bienvenue à Serpentard!")
}

Lecture dans la console ->
Bienvenue à Gryffondor!

Ici, House est une énumération qui a quatre valeurs possibles :  .Gryffondor, .Poufsouffle, .Serdaigle, et .Serpentard.

Maintenant, supposons que tu veux stocker la maison d’un étudiant. Tu peux créer une variable de type House et lui attribuer une des valeurs de l’énumération.

Pour agir en fonction de la maison de l’étudiant, tu peux utiliser une instruction switch qui teste toutes les valeurs possibles de l’énumération. Ce code vérifie la valeur de studentHouse et affiche un message de bienvenue en fonction de la maison.

  Itération


enum House: CaseIterable {
    case Gryffondor, Poufsouffle, Serdaigle, Serpentard
}

for house in House.allCases {
    print(house)
}
Tu peux utiliser le protocole CaseIterable pour itérer sur toutes les valeurs d’une énumération. Ce protocole fournit automatiquement une collection de toutes les valeurs de l’énumération, accessible via la propriété allCases.

 Valeurs associées


enum WizardAction {
    case castSpell(spellName: String)
    case earnHousePoints(points: Int, house: House)
    case visitPlace(place: String)
    case useObject(object: String)
}

let harryAction = WizardAction.castSpell(spellName: "Expelliarmus")
let hermioneAction = WizardAction.earnHousePoints(points: 10, house: .Gryffondor)
let ronAction = WizardAction.visitPlace(place: "La Chambre des Secrets")
let malfoyAction = WizardAction.useObject(object: "Retourneur de Temps")
Les énumérations peuvent avoir des valeurs associées. Ça signifie qu’un cas d’énumération peut stocker des informations supplémentaires avec chaque instance. Les valeurs associées permettent aux énumérations d’être plus flexibles et de stocker des données variées pour chaque cas.

Valeur brute


enum House: String {
    case Gryffondor = "🦁"
    case Poufsouffle = "🦡"
    case Serdaigle = "🦅"
    case Serpentard = "🐍"
}

let gryffondorBadge = House.Gryffondor.rawValue
print(gryffondorBadge) 


Les énumérations peuvent avoir des valeurs brutes raw values. Les valeurs brutes sont des valeurs prédéfinies que chaque cas d’énumération peut avoir, comme des chaînes de caractères, des nombres ou des caractères. Elles permettent d’assigner des valeurs spécifiques à chaque cas de l’énumération.

 Enumération imbriquées


enum Character {
    enum House {
        case Gryffondor, Poufsouffle, Serdaigle, Serpentard
    }
    enum Role {
        case student, teacher, headmaster
    }
}

struct Wizard {
    let name: String
    let house: Character.House
    let role: Character.Role
}

let harry = Wizard(name: "Harry Potter", house: .Gryffondor, role: .student)
let dumbledore = Wizard(name: "Albus Dumbledore", house: .Gryffondor, role: .headmaster)
let snape = Wizard(name: "Severus Snape", house: .Serpentard, role: .teacher)
let luna = Wizard(name: "Luna Lovegood", house: .Serdaigle, role: .student)
Les énumérations imbriquées sont un moyen d’organiser et de structurer ton code de manière hiérarchique. Elles permettent de créer des relations logiques entre différents ensembles de valeurs.

Exercices Pratiques

App météo

Télécharger le playground

Accède aux consignes directement en téléchargeant le playground.

⚠️ Les consignes que tu trouveras dans le playground ne sont pas verrouillées. Fais attention à ne pas les effacer par inadvertance ! 

Objectif

Les enums te permettent de définir clairement les cas possibles pour une donnée. Les comprendre te donnera les outils nécessaires pour structurer tes choix et rendre ton code plus fiable.

Quiz

Après un peu de pratique, il est temps de te tester avec un petit quiz pour vérifier si tout est clair pour toi. Prends ton temps, lis bien les questions, et bonne chance.

Note

Quand j’ai appris la programmation, mon formateur nous a enseigné une méthode amusante, la technique du canard 🦆. Si tu bloques sur un morceau de code que tu ne comprends pas bien, essaie d’en parler à quelqu’un, de l’écrire, ou même de l’expliquer à un objet (comme un canard en plastique, d’où le nom !). Cette méthode fonctionne vraiment bien, le simple fait de verbaliser ton problème, même à voix haute, t’aide à prendre du recul et à mieux le comprendre.

Exercices Pratiques

App météo

Télécharger le playground

Accède aux consignes directement en téléchargeant le playground.

⚠️ Les consignes que tu trouveras dans le playground ne sont pas verrouillées. Fais attention à ne pas les effacer par inadvertance ! 

Objectif

Les enums te permettent de définir clairement les cas possibles pour une donnée. Les comprendre te donnera les outils nécessaires pour structurer tes choix et rendre ton code plus fiable.

Quiz

Après un peu de pratique, il est temps de te tester avec un petit quiz pour vérifier si tout est clair pour toi. Prends ton temps, lis bien les questions, et bonne chance.

Note

Quand j’ai appris la programmation, mon formateur nous a enseigné une méthode amusante, la technique du canard 🦆. Si tu bloques sur un morceau de code que tu ne comprends pas bien, essaie d’en parler à quelqu’un, de l’écrire, ou même de l’expliquer à un objet (comme un canard en plastique, d’où le nom !). Cette méthode fonctionne vraiment bien, le simple fait de verbaliser ton problème, même à voix haute, t’aide à prendre du recul et à mieux le comprendre.