instanciar - El resumen de Scala contra la clase abstracta
instanciar clases scala (2)
Como se answered , todas las subclases heredadas directamente de una clase sellada (abstracta o no) deben estar en el mismo archivo. Una consecuencia práctica de esto es que el compilador puede advertir si la coincidencia de patrón está incompleta. Por ejemplo:
sealed abstract class Tree
case class Node(left: Tree, right: Tree) extends Tree
case class Leaf[T](value: T) extends Tree
case object Empty extends Tree
def dps(t: Tree): Unit = t match {
case Node(left, right) => dps(left); dps(right)
case Leaf(x) => println("Leaf "+x)
// case Empty => println("Empty") // Compiler warns here
}
Si el Tree
está sealed
, entonces el compilador lo advierte a menos que la última línea esté sin comentar.
¿Cuál es la diferencia entre la clase Scala sealed abstract
y sealed abstract
?
La diferencia es que todas las subclases de una clase sellada (ya sea abstracta o no) deben estar en el mismo archivo que la clase sellada.