1
sealed trait Foo {
type T <: Option[Any]
val x : T
}
case class Bar(x : Option[Int]) extends Foo {
type T = Option[Int]
}
val baz : Foo = Bar(Some(42))
baz.x match {
case Some(a) => a
case None => 1337
}
Ceci est le message d'erreur lors d'une tentative de correspondance de motif:Motif match Résumé type Trait Membre
:12: error: pattern type is incompatible with expected type;
found : None.type
required: baz.T
Je crois que cela est dû au type d'effacement du type T.
Ne devriez-vous pas faire le cas _ => 1337 à la place? – nattyddubbs