copyWith und Wertgleichheit
Aktualisieren Sie unveränderliche Daten und vergleichen Sie sie nach ihrem Wert
copyWith und Wertgleichheit ist eine kostenlose Dart Academy-Lektion auf CoddyKit. Dies ist Lektion 4 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Dart Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Dart Academy-Kurs umfasst insgesamt 4 Lektionen.
Unveränderliche Daten aktualisieren
Sie können ein unveränderliches Objekt nicht ändern. Zum Aktualisieren erstellen Sie daher ein neues Objekt. Das Muster dafür heißt copyWith.
Was copyWith macht
Eine copyWith-Methode gibt ein neues Objekt zurück. Für übersprungene Felder behält sie die aktuellen Werte bei und ersetzt nur die übergebenen.
final updated = user.copyWith(name: 'Ada');copyWith schreiben
Jeder Parameter ist nullable und erhält standardmäßig den Wert des vorhandenen Feldes. So können Aufrufer nur die Felder überschreiben, die für sie relevant sind.
User copyWith({String? name}) =>
User(name: name ?? this.name);Die Null-Falle
Der Trick ?? this.field bedeutet, dass Sie ein Feld mit copyWith nicht auf null setzen können. Die meisten Datenmodelle akzeptieren diese kleine Einschränkung.
Standardmäßige Gleichheit
Standardmäßig sind zwei Objekte nur dann gleich, wenn sie dieselbe Instanz sind. Zwei Kopien mit identischen Daten gelten trotzdem als verschieden.
User('Ada') == User('Ada'); // falseDas Ziel der Wertgleichheit
Oft sollen Objekte gleich sein, wenn ihre Daten übereinstimmen, nicht ihre Identität. Das nennt man Wertgleichheit, und Sie müssen sie ausdrücklich aktivieren.
operator == überschreiben
Definieren Sie operator ==, um die relevanten Felder zu vergleichen. Nun gelten zwei Objekte mit denselben Daten als gleich.
bool operator ==(o) =>
o is User && o.name == name;hashCode immer überschreiben
Wenn Sie == überschreiben, müssen Sie auch hashCode überschreiben. Gleiche Objekte müssen denselben Hashwert haben, sonst verhalten sich Sets und Maps fehlerhaft.
int get hashCode => name.hashCode;Die Object.hash-Hilfsmethode
Kombinieren Sie mehrere Felder übersichtlich mit Object.hash. Daraus wird aus allen übergebenen Werten ein geeigneter Hashcode erzeugt.
int get hashCode => Object.hash(name, age);Wertgleichheit macht Collections leistungsfähig
Mit Wertgleichheit kann ein Set echte Duplikate entfernen und eine Map Schlüssel anhand ihrer Daten statt ihrer Identität finden.
Überlassen Sie es den Tools
Pakete wie equatable oder freezed generieren ==, hashCode und copyWith für Sie, sodass Ihre unveränderlichen Modelle kurz und korrekt bleiben. 🛠️
Kurzer Check
Kurzer Check zur Wertgleichheit.
Zusammenfassung
Sie haben gelernt, unveränderliche Daten mit copyWith zu aktualisieren und mithilfe von == plus hashCode anhand ihrer Daten zu vergleichen, um echte Wertgleichheit zu erreichen. 🌟
Häufig gestellte Fragen
Ist die Lektion „copyWith und Wertgleichheit“ kostenlos?
Ja — der vollständige Text von „copyWith und Wertgleichheit“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Dart Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Dart Academy-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „copyWith und Wertgleichheit“?
Aktualisieren Sie unveränderliche Daten und vergleichen Sie sie nach ihrem Wert Du übst Dart Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um Dart Academy zu starten?
Keine Vorkenntnisse erforderlich. Dart Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 4 von 4.
Wie lange dauert die Lektion „copyWith und Wertgleichheit“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser Dart Academy-Lektion Code schreiben und ausführen?
Ja. Jede Dart Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- Final-Felder und tiefe Unveränderlichkeit
- sealed-Klassen und vollständige switch-Anweisungen
- base-, interface- und final-Modifikatoren
- copyWith und Wertgleichheit