type parameter implicitly generic for comprehension scala singleton slick case-class

implicitly - type parameter scala



Usar el método.tupled cuando el objeto compañero está en la clase (4)

Esto es muy similar a lo que dijo Alexey Romanov, pero para evitar levantar tupled cuando sea necesario, simplemente lo agregamos a nuestros objetos acompañantes.

object Person { def something = "rawr" def tupled = (Person.apply _).tupled }

Ahora puede llamar a Person.tupled tal como lo haría si no tuviera un objeto complementario.

Estoy en el proceso de migrar de Slick a Slick 2, y en Slick 2 está destinado a usar el método tupled al proyectar en una clase de caso (como se muestra aquí http://slick.typesafe.com/doc/2.0.0-RC1/migration.html )

El problema es cuando la clase de caso tiene un objeto complementario, es decir, si tiene algo como esto

case class Person(firstName:String,lastName:String) { }

Junto con un objeto compañero

object Person { def something = "rawr" }

En el mismo ámbito, el método tupled ya no funciona, porque intenta ejecutar tupled en el object , en lugar de la case class .

¿Hay alguna manera de recuperar la case class de case class de Person lugar del object , para que pueda llamar a tupled correctamente?


Para continuar con algunos de los otros comentarios, también podría hacer lo siguiente, ya que tuple llama al método de aplicación predeterminado generado para la clase de caso.

object Person { ... def tupled = (this.apply _).tupled }


También puedes escribir

(Person.apply _).tupled

para evitar repetir los tipos.