Quelle est la différence entre Scala abstract abstract et abstract Scala class?
Réponses
Trop de publicités?
Daniel C. Sobral
Points
159554
Comme il a été répondu , toutes les sous-classes héritant directement d’une classe scellée (abstraite ou non) doivent figurer dans le même fichier. Une conséquence pratique de cela est que le compilateur peut avertir si la correspondance de modèle est incomplète. Par exemple:
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 Tree
est sealed
, le compilateur avertit à moins que cette dernière ligne ne soit pas commentée.