Case object Case object
De la même façon qu’une case class est une classe améliorée, un case object est un objet amélioré. Les méthodes toString, hashCode et equals sont définies de la même façon, permettant de comparer et lire les case objects plus aisément.
Prenons comme exemple, une énumération de couleur. On définit le trait Couleur qui servira dans la suite du chapitre.
On définit également le trait CouleurBasique qui étend le trait Couleur en ajoutant le préfixe sealed au trait. Cela permet de décrire de façon exhaustive tous les éléments qui étendent le trait et qui doivent tous être écrits dans le même fichier. C’est ainsi qu’on définit une énumération en Scala.
sealed trait Couleur
// defined trait Couleur
sealed trait CouleurBasique extends Couleur
// defined trait CouleurBasique
Ensuite, on définit cinq case objets pour définir les couleurs Bleu, Rouge, Jaune, Blanc et Noir.
case object Bleu extends CouleurBasique
// defined object Bleu
case object Rouge extends CouleurBasique
// defined object Rouge
case object Jaune extends CouleurBasique
// defined object Jaune
case object Blanc extends CouleurBasique
// defined object Blanc
case object Noir extends CouleurBasique
// defined object Noir
Comme décrit plus tôt...