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'); // falseObjetivo 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
- Campos final e inmutabilidad profunda
- Clases sealed y switch exhaustivo
- Modificadores base, interface y final
- copyWith e igualdad por valor