Sé que el son algunos cambios previstos con respecto a las clases de casos, como no permitir la herencia entre ellos:¿Qué cosas de las clases de casos se eliminarán después de Scala 2.9 exactamente?
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
o casos de clases sin lista de parámetros (no estoy seguro de eso):
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
qué más está actualmente @deprecated?
La razón por la cual las clases de casos sin listas de parámetros son "mal" es porque llevan ningún estado que sería diferente de un caso a otro, ya que no tienen campos (por lo al menos ninguno que se establezca a través de argumentos de constructor, que es la única forma en que debería hacerse ...), por lo que realmente deberían ser objetos de caso, ya que una sola instancia puede representar todos los "estados" posibles. –
@Dean Wampler: ¿Cómo son las clases de casos con una lista de parámetros vacía '()' diferente? – kassens
¿Por qué es hedionda la herencia entre clases de casos? – djondal