Dart Academy · Lezione

copyWith ed equality basata sul valore

Aggiornare dati immutabili e confrontarli per valore

Lezione 4 di 413 passaggi

copyWith ed equality basata sul valore è una lezione Dart Academy gratuita su CoddyKit. Questa è la lezione 4 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Dart Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Dart Academy include 4 lezioni in totale.

Aggiornare dati immutabili

Non può modificare un oggetto immutabile, quindi per aggiornarlo deve crearne uno nuovo. Il pattern che lo fa in modo pulito è copyWith.

Cosa fa copyWith

Un metodo copyWith restituisce un nuovo oggetto, mantenendo i valori attuali dei campi omessi e sostituendo solo quelli specificati.

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

Scrivere copyWith

Ogni parametro ammette null e ha come valore predefinito il campo esistente. In questo modo chi chiama il metodo può sovrascrivere solo i campi di interesse.

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

La trappola di null

L'espediente ?? this.field significa che non può impostare un campo a null usando copyWith. La maggior parte dei modelli dati accetta questa piccola limitazione.

Uguaglianza predefinita

Per impostazione predefinita, due oggetti sono uguali solo se sono la stessa istanza. Anche due copie con dati identici vengono considerate diverse.

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

Obiettivo dell'uguaglianza per valore

Spesso si desidera che gli oggetti siano uguali quando corrispondono i loro dati, non la loro identità. Questa si chiama uguaglianza per valore e si sceglie esplicitamente.

Sovrascrivere operator ==

Definisca operator == per confrontare i campi rilevanti. Ora due oggetti con gli stessi dati vengono trattati come uguali.

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

Sovrascrivere sempre hashCode

Ogni volta che sovrascrive ==, deve sovrascrivere anche hashCode. Gli oggetti uguali devono avere lo stesso hash, altrimenti Set e Map si comportano in modo errato.

int get hashCode => name.hashCode;

L'helper Object.hash

Combini diversi campi in modo semplice con Object.hash. Produce un buon codice hash a partire da tutti i valori forniti.

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

L'uguaglianza potenzia le raccolte

Con l'uguaglianza per valore, un Set può eliminare i duplicati effettivi e una Map può trovare le chiavi in base ai dati, non all'identità.

Lasci fare agli strumenti

Package come equatable o freezed generano per lei ==, hashCode e copyWith, mantenendo i modelli immutabili brevi e corretti. 🛠️

Verifica rapida

Una verifica rapida sull'uguaglianza per valore.

Riepilogo

Ha imparato ad aggiornare i dati immutabili con copyWith e a confrontarli in base ai dati usando == insieme a hashCode per ottenere una vera uguaglianza per valore. 🌟

Gratis per iniziare

Impara Dart con un tutor IA — gratis

Scrivi ed esegui vero codice nel tuo browser, ricevi aiuto istantaneo da un tutor IA disponibile 24/7, e riprendi da dove hai lasciato sul web o nell'app.

Corsi
30
Lezioni
120

Domande Frequenti

La lezione «copyWith ed equality basata sul valore» è gratuita?

Sì — il testo completo di «copyWith ed equality basata sul valore» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Dart Academy, passa a CoddyKit PRO. Il corso Dart Academy include 4 lezioni in totale.

Cosa imparerò in «copyWith ed equality basata sul valore»?

Aggiornare dati immutabili e confrontarli per valore Eserciti Dart Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare Dart Academy?

Non è richiesta alcuna esperienza precedente. Dart Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 4 di 4.

Quanto tempo richiede la lezione «copyWith ed equality basata sul valore»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione Dart Academy?

Sì. Ogni lezione Dart Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. Campi final e immutabilità profonda
  2. Classi sealed e switch esaustivi
  3. Modificatori base, interface e final
  4. copyWith ed equality basata sul valore
← Torna a Dart Academy