May 21, 2024

En Scala, las case classes son una característica fundamental que nos permite crear estructuras de datos inmutables y expresivas. Las case classes proporcionan una sintaxis concisa y poderosa para definir clases que se utilizan principalmente para almacenar datos.

¿Qué son las case classes?

Una case class en Scala es una clase especial que se utiliza principalmente para representar datos inmutables. Las case classes se caracterizan por varias características distintivas:

  1. Sintaxis concisa: La definición de una case class en Scala es mucho más concisa que la de una clase regular. Scala genera automáticamente un conjunto de métodos útiles, como constructores, métodos de acceso y comparación estructural, basados en los parámetros de la case class.
  2. Inmutabilidad: Por defecto, las instancias de case classes son inmutables, lo que significa que no se pueden modificar una vez creadas. Esto ayuda a prevenir errores y garantiza la consistencia de los datos.
  3. Comparación estructural: Las case classes proporcionan una implementación predeterminada de los métodos equals, hashCode y toString basados en la comparación estructural de sus campos. Esto facilita la comparación y la impresión de las instancias de case classes.
  4. Desestructuración: Las case classes admiten la desestructuración de patrones, lo que significa que se pueden extraer los valores de sus campos individualmente utilizando patrones concisos.

Sintaxis básica de las case classes:

La sintaxis para definir una case class en Scala es la siguiente:

case class Persona(nombre: String, edad: Int)

En este ejemplo, hemos definido una case class llamada Persona con dos parámetros: nombre de tipo String y edad de tipo Int. Scala generará automáticamente un constructor, métodos de acceso, métodos equals, hashCode y toString basados en estos parámetros.

Uso de case classes:

Las case classes se utilizan principalmente para representar datos y modelar conceptos en nuestros programas. Veamos algunos ejemplos de uso de case classes:

case class Punto(x: Double, y: Double)

val punto1 = Punto(2.5, 3.7)
val punto2 = Punto(1.8, 4.2)

println(punto1.x) // Imprime 2.5
println(punto2.y) // Imprime 4.2

val punto3 = punto1.copy(y = 5.1)
println(punto3) // Imprime Punto(2.5, 5.1)

En este ejemplo, hemos definido una case class Punto que representa un punto en un plano con coordenadas x e y. Creamos dos instancias de Punto utilizando el constructor generado automáticamente. Luego, accedemos a los campos x y y de las instancias. También podemos utilizar el método copy para crear una nueva instancia de Punto con algunos campos modificados.

Leave a Reply

Your email address will not be published. Required fields are marked *