0Pricing
Dart Academy · Leçon

copyWith et égalité par valeur

Mettre à jour des données immuables et les comparer par valeur

copyWith et égalité par valeur est une leçon Dart Academy gratuite sur CoddyKit. Ceci est la leçon 4 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 Dart Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Dart Academy comprend 4 leçons au total.

Mettre à jour des données immuables

Vous ne pouvez pas modifier un objet immuable ; pour le mettre à jour, vous devez donc en créer un nouveau. Le modèle qui réalise cela proprement est copyWith.

Rôle de copyWith

Une méthode copyWith renvoie un nouvel objet, conserve les valeurs actuelles des champs que vous omettez et remplace uniquement celles que vous fournissez.

final updated = user.copyWith(name: 'Ada');

Écrire copyWith

Chaque paramètre peut être nul et prend par défaut la valeur du champ existant. Les appelants peuvent ainsi remplacer uniquement les champs qui les intéressent.

User copyWith({String? name}) =>
  User(name: name ?? this.name);

Le piège de null

L'astuce ?? this.field signifie que vous ne pouvez pas définir un champ à null avec copyWith. La plupart des modèles de données acceptent cette petite limitation.

Égalité par défaut

Par défaut, deux objets sont égaux uniquement s'ils sont la même instance. Deux copies contenant des données identiques restent considérées comme différentes.

User('Ada') == User('Ada'); // false

Objectif de l'égalité par valeur

Souvent, vous voulez que des objets soient égaux lorsque leurs données correspondent, et non lorsqu'ils ont la même identité. C'est ce qu'on appelle l'égalité par valeur, que vous devez activer.

Redéfinir l'opérateur ==

Définissez operator == pour comparer les champs importants. Deux objets contenant les mêmes données sont alors considérés comme égaux.

bool operator ==(o) =>
  o is User && o.name == name;

Toujours redéfinir hashCode

Chaque fois que vous redéfinissez ==, vous devez aussi redéfinir hashCode. Les objets égaux doivent partager le même hachage, sinon les ensembles et les tables associatives se comportent mal.

int get hashCode => name.hashCode;

Utilitaire Object.hash

Combinez proprement plusieurs champs avec Object.hash. Il produit un bon code de hachage à partir de toutes les valeurs que vous lui transmettez.

int get hashCode => Object.hash(name, age);

L'égalité renforce les collections

Avec l'égalité par valeur, un ensemble peut supprimer les vrais doublons et une table associative peut retrouver des clés grâce à leurs données plutôt qu'à leur identité.

Laisser les outils s'en charger

Des paquets comme equatable ou freezed génèrent pour vous ==, hashCode et copyWith, afin que vos modèles immuables restent courts et corrects. 🛠️

Vérification rapide

Vérification rapide de l'égalité par valeur.

Récapitulatif

Vous avez appris à mettre à jour des données immuables avec copyWith et à les comparer grâce à == et hashCode pour obtenir une véritable égalité par valeur. 🌟

Questions Fréquemment Posées

La leçon « copyWith et égalité par valeur » est-elle gratuite ?

Oui — le texte complet de « copyWith et égalité par valeur » 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 Dart Academy, passe à CoddyKit PRO. Le cours Dart Academy comprend 4 leçons au total.

Qu'est-ce que j'apprendrai dans « copyWith et égalité par valeur » ?

Mettre à jour des données immuables et les comparer par valeur Tu pratiques Dart 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 Dart Academy ?

Aucune expérience préalable n'est requise. Dart 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 4 sur 4.

Combien de temps prend la leçon « copyWith et égalité par valeur » ?

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 Dart Academy ?

Oui. Chaque leçon Dart 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. Champs finaux et immutabilité profonde
  2. Classes sealed et switch exhaustif
  3. Modificateurs base, interface et final
  4. copyWith et égalité par valeur
← Retour à Dart Academy