Мне нужно определить, чтобы возвращать класс case, который расширяет черту:
trait Id {
def id: Long
}
case class Person(name: String)
val john = Person("John")
val johnWithId: Person with Id = /*person -> 123L*/ ???
Любая идея, как я могу этого достичь?
Я пытаюсь уменьшить дублирование кода, поэтому я не объявлял трейт Person следующим образом:
trait Id {
def id: Long
}
trait Person {
def name: String
}
case class PersonWithoutId(name: String) extends Person
case class PersonWithId(name: String, id: Long) extends Person with Id
val john = PersonWithoutId("John")
val johnWithId: Person with Id = PersonWithId(person.name, 123L)
Есть идеи, как этого добиться?