Search code examples
scalacase-class

Create common trait for all case classes supporting copy(id=newId) method


I'm trying to do something like that:

trait IdentifiableModel[T] {
  self: { def copy(id: ObjectId): T } =>

  val id: ObjectId
}

I've found some other related questions trying to do similar things but they didn't really answer to this question. In my case, I'm trying to copy the case class subclasses of IdentifiableModel that all share an id value


Solution

  • Travis Brown has the good answer but didn't reply.

    He uses Scala macros: Howto model named parameters in method invocations with Scala macros?