Учитывая этот код:Scala структурного типа с методом, где только некоторый PARAMS известен
object Testy extends App {
case class Person(
id: Option[Long],
firstName: String,
lastName: String,
address: Address)
case class Address(id: Option[Long],
name: String,
number: Int)
val personOrAddress:AnyRef= Person(Some(1L), "first", "last", Address(Some(1L), "street", 1))
type HasCopyMethodWithId = _
val newId = Some(123L)
personOrAddress.asInstanceOf[HasCopyMethodWithId].copy(id = newId)
}
Как я могу реализовать «тип HasCopyMethodWithId», так что этот код компилируется и не терпит неудачи во время выполнения?
Я пробовал:
type HasCopyMethodWithId = {def copy(id: Option[Long]): AnyRef}
Я думаю, что вы не можете, эти способы копирования различны. Вам нужно будет создать другой метод типа copyId, который будет использовать копию. –
Может ли быть обнаружен фактический тип (а не общий структурный тип) с помощью макросов? – eirirlar