Lección 12 / 20

case class (clases para datos)

En esta lección crearás una clase pensada para representar datos, con un montón de comportamiento ya incluido.

Añadir case delante de class hace que Scala genere automáticamente varias cosas: un método toString legible, una comparación == que mira el contenido en lugar de la identidad, un método copy y la posibilidad de usarla en pattern matching. Además puedes crear instancias sin new.

El código de ejemplo crea dos puntos con las mismas coordenadas y comprueba que son iguales. Fíjate en la salida: Point(3.0,4.0) aparece así sin que hayas escrito ningún toString, y los enteros 3 y 4 se muestran como decimales porque el campo se declaró Double.

Ese p1 == p2 que da true es la diferencia que más sorprende viniendo de Java. Allí, == compara si son el mismo objeto, y dos puntos creados por separado darían false; para comparar contenidos hay que escribir equals a mano. En Scala, con case class, comparar por contenido es lo que ocurre por defecto, que es lo que casi siempre quieres al trabajar con datos.

En el trabajo real, las case class son la forma estándar de modelar cualquier dato: la respuesta de una API, una fila de una base de datos, un mensaje entre servicios. Y como son inmutables, para «modificar» una se usa p1.copy(x = 10), que devuelve una copia nueva con ese campo cambiado.

📖 Código de referencia
✍️ Tu código
Escribe tu código y pulsa «Ejecutar»

🧪 Este sitio no puede compilar ni ejecutar Scala directamente, así que comprueba al instante si lo que escribiste coincide con el código de referencia (la corrección ocurre por completo en tu navegador; no se envía nada a ningún servidor).

Espacio publicitario (banner)
Espacio publicitario (en el artículo)