Case class Case class

1. Définition

Une case class est une classe qui présente trois grands avantages supplémentaires.

Premièrement, une méthode apply est systématiquement présente dans son objet compagnon (cf. chapitre Un aperçu du langage - Objets singletons) ce qui permet de créer une instance d’une case class sans le préfixe new. Cela rend le code moins encombré et donc plus lisible.

Deuxièmement, tous ses paramètres sont des val, c’est-à-dire des variables immuables, comme décrit dans le chapitre Un aperçu du langage - Variables, ce qui permet d’y accéder plus facilement.

Troisièmement, les méthodes toString, hashCode et equals sont automatiquement implémentées et de façon plus naturelle : respectivement, elles affichent, hachent et comparent un arbre construit à partir des arguments de la case class. Cela permet de comparer et lire les case class plus efficacement.

Prenons comme exemple une classe abstraite ClasseCouleur et une case class CouleurPleine qui étend cette classe.

abstract class ClasseCouleur 
// defined class ClasseCouleur 
 
case class CouleurPleine(nom: String) extends ClasseCouleur 
// defined class CouleurPleine 

Avec une instance de la classe CouleurPleine, on peut accéder à son paramètre nom.

val couleur = CouleurPleine("rouge") 
// couleur: CouleurPleine = CouleurPleine("rouge") 
 ...
couv_EPSCALA.png

Découvrez 

le livre :

Aussi inclus dans nos :

Précédent
Trait
Suivant
Case object