Je sais que certains changements prévus en ce qui concerne les classes de cas, comme interdisant l'héritage entre eux:Quelles choses autour des classes de cas seront supprimées après Scala 2.9 exactement?
scala> case class Foo()
defined class Foo
scala> case class Bar() extends Foo()
<console>:9: warning: case class `class Bar' has case ancestor `class Foo'. Case-to-case inheritance has potentially dangerous bugs which are unlikely to be fixed. You are strongly encouraged to instead use extractors to pattern match on non-leaf nodes.
case class Bar() extends Foo()
^
defined class Bar
ou les classes cas sans liste de paramètres (pas sûr):
scala> case class Foo
<console>:1: warning: case classes without a parameter list have been deprecated;
use either case objects or case classes with `()' as parameter list.
case class Foo
^
<console>:7: warning: case classes without a parameter list have been deprecated;
use either case objects or case classes with `()' as parameter list.
case class Foo
^
defined class Foo
Quoi d'autre actuellement @deprecated?
La raison pour laquelle les classes de cas sans listes de paramètres sont « puant » est parce qu'ils ne portent pas l'Etat qui serait différent d'une instance à l'autre, car ils ont pas de champs (à ceux qui sont définis par les arguments constructeur, ce qui est la seule façon de le faire ...), ils devraient donc être des objets cas, puisqu'une seule instance peut représenter tous les "états" possibles. –
@Dean Wampler: Comment les classes de cas avec une liste de paramètres vide '()' sont-elles différentes? – kassens
Pourquoi l'héritage entre les classes de cas est-il malodorant? – djondal