Rasgos sellados en Scala

Mohammad Irfan 21 junio 2023
Rasgos sellados en Scala

Este tutorial discutirá los rasgos sellados con ejemplos de ejecución en Scala.

Rasgos sellados en Scala

Los rasgos en Scala son similares a las interfaces de Java y se utilizan para compartir datos entre clases. Podemos instanciar la clase, pero los rasgos no.

En Scala, los rasgos se pueden marcar como sellados, de forma similar a las clases, para restringir la herencia. Los rasgos sellados y todos los subtipos deben declararse en el mismo archivo para garantizar que se conocen todos los subtipos.

Para definir un rasgo, usamos la palabra clave trait, como:

trait Runnable

De manera similar, para crear rasgos sellados, usamos la clase sellada, como:

sealed trait Runnable

Puntos clave:

  • Un rasgo sellado solo puede extenderse en el mismo archivo.
  • El compilador conoce fácilmente todos los subtipos posibles.
  • Se recomienda utilizar caracteres sellados solo si el número de posibles subtipos es finito y conocido de antemano.

Crear un rasgo sellado en Scala

Entendamos creando un rasgo sellado en Scala.

import scala.collection.mutable.ArrayBuffer

sealed trait Color {
    val name: String
}

class Black(val name: String) extends Color
class Red(val name: String) extends Color

object MyClass {
    def main(args: Array[String]) {
        val black = new Black("Black")
        val red = new Red("Red")
        val animals = ArrayBuffer.empty[Color]

        animals.append(black)
        animals.append(red)
        animals.foreach(color => println("Color Name: "+color.name))
    }
}

Producción :

Color Name: Black
Color Name: Red