En Scala, un sealed trait
es una característica (trait) que restringe la herencia, permitiendo que solo las clases y objetos definidos en el mismo archivo puedan extenderlo. Esto es útil para crear tipos algebraicos o garantizar un control exhaustivo sobre las subclases en un patrón de diseño.
sealed trait
en Scala?
El modificador sealed
en Scala indica que un trait o clase solo puede ser extendido o implementado dentro del mismo archivo fuente. Esto significa que cualquier intento de extender el sealed trait
desde otro archivo generará un error. Esta característica es fundamental para patrones como los tipos algebraicos (sum types), ya que el compilador puede verificar que se hayan manejado todos los casos posibles en un match
.
El uso de sealed trait
es especialmente útil en situaciones donde se necesita un exhaustivo control sobre las variantes de un tipo, como en el procesamiento de estructuras jerárquicas o en el uso de patrones de coincidencia (pattern matching
).
sealed trait
en Scala
sealed trait Animal
case class Dog(name: String) extends Animal
case class Cat(name: String) extends Animal
def animalSound(animal: Animal): String = animal match {
case Dog(name) => s"$name says Woof"
case Cat(name) => s"$name says Meow"
}
En este ejemplo, Animal
es un sealed trait
y las clases Dog
y Cat
lo extienden. Esto asegura que solo esas dos clases puedan ser instancias de Animal
, y el compilador verificará que el match
cubre todos los casos posibles.
Para más información, consulta la documentación oficial de Scala.
Jorge García
Fullstack developer