¿Ya dominas lo básico? Un curso estructurado de Scala es la vía rápida para dar el salto.
Ver cursos de Scala en UdemyEnlace de afiliado. No te cuesta nada extra.
- 01Preparar el entorno (lo que necesitas)
- 02Tu primera salida (println)
- 03Variables (val y var)
- 04Anotaciones de tipo y tipos básicos
- 05Condicionales (la expresión if)
- 06Repetir (la expresión for)
- 07Escribir tu propia función
- 08Repetir (el bucle while)
- 09Trabajar con listas (List)
- 10Trabajar con diccionarios (Map)
- 11Clases (orientación a objetos)
- 12case class (clases para datos)
- 13Herencia y traits
- 14Pattern matching (la expresión match)
- 15El tipo Option (seguridad frente a null)
- 16Funciones de orden superior: map y filter
- 17object (objetos únicos)
- 18Textos e interpolación de cadenas
- 19for comprehensions (construir colecciones con yield)
- 20[Proyecto] Construye un mini sistema de inventario
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.
🧪 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).
