Scala est scellé abstrait vs classe abstraite
Quelle est la différence entre la classe sealed abstract
et la classe abstract
Scala?
62
demandé sur
Michal Kordas
2010-06-13 19:30:47
2 réponses
la différence est que toutes les sous-classes d'une classe scellée (qu'elle soit abstraite ou non) doivent être dans le même dossier que la classe scellée.
79
répondu
sepp2k
2010-06-13 15:34:16
Comme répondu , tous les directement hériter sous-classes d'une classe scellée (abstraite ou non) doivent être dans le même fichier. Une conséquence pratique de cette est que le compilateur peut avertir si la correspondance de modèle est incomplet. 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 le Tree
est sealed
, alors le compilateur avertit à moins que cette dernière ligne ne soit décommentée.
75
répondu
Daniel C. Sobral
2017-05-23 12:02:40