Swift Academy · Leçon

Equatable synthétisé

Obtenez == automatiquement et personnalisez-le si nécessaire.

Leçon 1 sur 413 étapes

Equatable synthétisé est une leçon Swift Academy gratuite sur CoddyKit. Ceci est la leçon 1 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Swift Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Swift Academy comprend 4 leçons au total.

Qu’est-ce qu’Equatable ?

Equatable est le protocole qui fournit l’opérateur == à un type. La conformité vous permet de comparer deux valeurs pour vérifier leur égalité et de les utiliser avec contains, firstIndex, etc.

Conformité automatique

Pour une structure dont toutes les propriétés stockées sont Equatable, Swift synthétise == pour vous — il vous suffit de déclarer la conformité :

struct Point: Equatable {
    let x: Int
    let y: Int
}
print(Point(x: 1, y: 2) == Point(x: 1, y: 2))  // true
print(Point(x: 1, y: 2) == Point(x: 9, y: 2))  // false

Fonctionnement de la synthèse

L’opérateur == généré compare chaque paire de propriétés stockées. Elles doivent toutes être égales pour que les valeurs le soient :

struct User: Equatable {
    let name: String
    let age: Int
}
let a = User(name: "Ann", age: 30)
let b = User(name: "Ann", age: 31)
print(a == b)  // false  (age differs)

Utiliser == dans les collections

Equatable permet d’utiliser de nombreuses opérations sur les tableaux :

struct Tag: Equatable { let name: String }
let tags = [Tag(name: "a"), Tag(name: "b")]
print(tags.contains(Tag(name: "b")))        // true
print(tags.firstIndex(of: Tag(name: "a"))!) // 0

Les énumérations sont aussi Equatable

Les énumérations bénéficient elles aussi de la synthèse de Equatable. Les énumérations sans valeurs associées sont Equatable même sans déclaration ; avec des valeurs associées, déclarez la conformité, et ces valeurs seront également comparées.

Énumération Equatable avec valeurs associées

Les valeurs associées participent à la comparaison :

enum Status: Equatable {
    case active
    case error(code: Int)
}
print(Status.error(code: 404) == Status.error(code: 404))  // true
print(Status.error(code: 404) == Status.error(code: 500))  // false

Types imbriqués

La synthèse se compose : une structure contenant des membres Equatable peut elle-même être synthétisée :

struct Line: Equatable {
    let start: Int
    let end: Int
}
struct Shape: Equatable {
    let lines: [Line]
}
print(Shape(lines: [Line(start: 0, end: 1)]) == Shape(lines: [Line(start: 0, end: 1)]))  // true

Quand la synthèse échoue

Si une propriété stockée n’est pas Equatable, la synthèse n’est pas disponible et vous devez écrire vous-même == (ce point sera abordé plus tard) :

struct Box: Equatable {
    let id: Int
    static func == (l: Box, r: Box) -> Bool { l.id == r.id }
}
print(Box(id: 1) == Box(id: 1))  // true

Les classes ne sont pas synthétisées automatiquement

Les types de référence ne bénéficient pas de la synthèse de == ; vous devez l’implémenter vous-même (en comparant l’identité ou les champs) :

final class Account: Equatable {
    let id: Int
    init(id: Int) { self.id = id }
    static func == (l: Account, r: Account) -> Bool { l.id == r.id }
}
print(Account(id: 7) == Account(id: 7))  // true

!= est dérivé automatiquement

Une fois que == existe, != est automatiquement dérivé comme sa négation :

struct Color: Equatable { let hex: String }
print(Color(hex: "#fff") != Color(hex: "#000"))  // true

Equatable dans le code générique

Equatable permet aux fonctions génériques de comparer des éléments — de nombreux algorithmes l’exigent :

func allSame<T: Equatable>(_ xs: [T]) -> Bool {
    guard let first = xs.first else { return true }
    return xs.allSatisfy { $0 == first }
}
print(allSame([2, 2, 2]))  // true
print(allSame(["a", "b"]))  // false

Vérification rapide

Pour quel type Swift synthétise-t-il automatiquement == lorsque vous déclarez Equatable ?

Récapitulatif

Vous avez découvert Equatable :

  • Equatable fournit == (ainsi que != automatiquement)
  • Les structures et énumérations dont les membres sont Equatable bénéficient de la synthèse de ==
  • Permet d’utiliser contains, firstIndex(of:), etc.
  • Les classes et les membres non-Equatable nécessitent un == écrit manuellement

Ensuite : Hashable.

Gratuit pour commencer

Apprends Swift avec un tuteur IA — gratuit

Écris et exécute du vrai code dans ton navigateur, obtiens de l'aide instantanée d'un tuteur IA disponible 24h/24, et reprends là où tu t'es arrêté sur le web ou dans l'app.

Cours
122
Leçons
409

Questions Fréquemment Posées

La leçon « Equatable synthétisé » est-elle gratuite ?

Oui — le texte complet de « Equatable synthétisé » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Swift Academy, passe à CoddyKit PRO. Le cours Swift Academy comprend 4 leçons au total.

Qu'est-ce que j'apprendrai dans « Equatable synthétisé » ?

Obtenez == automatiquement et personnalisez-le si nécessaire. Tu pratiques Swift Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer Swift Academy ?

Aucune expérience préalable n'est requise. Swift Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 1 sur 4.

Combien de temps prend la leçon « Equatable synthétisé » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon Swift Academy ?

Oui. Chaque leçon Swift Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. Equatable synthétisé
  2. Hashable et hash(into:)
  3. Comparable et tri
  4. Sémantique d’égalité personnalisée
← Retour à Swift Academy