spark pattern generic companion classes scala definition case-class

pattern - Scala: orden de definición para el objeto compañero vs clase de caso



scala pattern matching case class (2)

Este es un error conocido: SI-3772: compañeros y clases de casos propiedad del método . Esto está parcialmente arreglado, pero el problema del OP aún permanece. Vota si quieres arreglarlo.

En Scala 2.9.1 obtengo el siguiente comportamiento:

class Foo { case class X() object X // this compiles def bar() { object Y // this compiles case class Y() case class Z() object Z // won''t compile (see below) } }

El compilador se queja por el Object Z : error: Z ya está definido como objeto complementario de clase de caso Z (generado por el compilador)

Parece que no está permitido definir un objeto complementario para una clase de caso después de la definición de la clase de caso si están dentro de una definición de función. ¿Es este un error de compilación, o intencional? Si este último, ¿por qué?


La razón por la que se permite la primera y la segunda no es que las clases y los objetos puedan tener definiciones de reenvío, pero las definiciones no. Entonces, por qué es posible que el compilador mezcle el object X con el definido por la clase de caso, no es posible hacerlo en el segundo caso.

Me pregunto qué sucede en el caso de la Y : ¿el seguimiento o el acompañamiento del objeto no se genera en absoluto?