Étant donné ce code:Scala type structural avec la méthode où seuls quelques params sont connus
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)
}
Comment puis-je mettre en œuvre « type HasCopyMethodWithId » de sorte que ce code compile et ne manque pas à l'exécution?
J'ai essayé:
type HasCopyMethodWithId = {def copy(id: Option[Long]): AnyRef}
Je pense que vous ne pouvez pas, ces méthodes de copie sont différentes. Vous devrez créer une autre méthode comme 'copyId' qui utiliserait copy. –
Le type réel (pas un type structurel général) peut-il être détecté via des macros? – eirirlar