0Pricing
Dart Academy · Lektion

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'); // false

Das 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

  1. Final-Felder und tiefe Unveränderlichkeit
  2. sealed-Klassen und vollständige switch-Anweisungen
  3. base-, interface- und final-Modifikatoren
  4. copyWith und Wertgleichheit
← Zurück zu Dart Academy