0Pricing
Dart Academy · Lección

copyWith e igualdad por valor

Actualice datos inmutables y compárelos por valor

copyWith e igualdad por valor es una lección gratuita de Dart Academy en CoddyKit. Esta es la lección 4 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Dart Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Dart Academy incluye 4 lecciones en total.

Actualizar datos inmutables

No puede cambiar un objeto immutable, por lo que para actualizarlo debe crear uno nuevo. El patrón que lo hace de forma limpia es copyWith.

Qué hace copyWith

Un método copyWith devuelve un objeto nuevo, conserva los valores actuales de los campos que omita y reemplaza solo los que proporcione.

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

Escribir copyWith

Cada parámetro admite valores null y tiene como valor predeterminado el campo existente. Esto permite sobrescribir únicamente los fields que le interesen.

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

La trampa de null

El truco ?? this.field significa que no puede establecer un campo en null mediante copyWith. La mayoría de los modelos de datos acepta esta pequeña limitación.

Igualdad predeterminada

De forma predeterminada, dos objetos son iguales solo si son la same instance. Dos copias con datos idénticos siguen considerándose diferentes.

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

Objetivo de la igualdad por valor

A menudo querrá que los objetos sean iguales cuando coincidan sus data, no su identidad. Esto se denomina igualdad por valor y debe habilitarla explícitamente.

Sobrescribir operator ==

Defina operator == para comparar los campos relevantes. Así, dos objetos con los mismos datos se tratarán como iguales.

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

Sobrescriba siempre hashCode

Siempre que sobrescriba ==, también debe sobrescribir hashCode. Los objetos iguales deben compartir un hash; de lo contrario, Sets y Maps podrían comportarse de forma incorrecta.

int get hashCode => name.hashCode;

Ayudante Object.hash

Combine varios campos de forma limpia con Object.hash. Este método produce un único código hash adecuado a partir de todos los valores que proporcione.

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

La igualdad potencia las colecciones

Con la igualdad por valor, un Set puede eliminar duplicados reales y un Map puede encontrar claves por sus datos, no por su identidad.

Deje que las herramientas lo hagan

Paquetes como equatable o freezed generan ==, hashCode y copyWith automáticamente, para que sus modelos inmutables sean breves y correctos. 🛠️

Comprobación rápida

Comprobación rápida sobre la igualdad por valor.

Resumen

Ha aprendido a actualizar datos inmutables con copyWith y a compararlos por sus datos usando == junto con hashCode para obtener una verdadera igualdad por valor. 🌟

Preguntas frecuentes

¿La lección «copyWith e igualdad por valor» es gratis?

Sí — el texto completo de «copyWith e igualdad por valor» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Dart Academy, actualiza a CoddyKit PRO. El curso de Dart Academy incluye 4 lecciones en total.

¿Qué aprenderé en «copyWith e igualdad por valor»?

Actualice datos inmutables y compárelos por valor Practicas Dart Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar Dart Academy?

No se requiere experiencia previa. Dart Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 4 de 4.

¿Cuánto tiempo toma la lección «copyWith e igualdad por valor»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de Dart Academy?

Sí. Cada lección de Dart Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Campos final e inmutabilidad profunda
  2. Clases sealed y switch exhaustivo
  3. Modificadores base, interface y final
  4. copyWith e igualdad por valor
← Volver a Dart Academy