Klasse Qux
hat nur (und kann nur) eine einzige Definition von Typ A
bieten die abstrakten Anforderungen von Foo
und Bar
,
case class Qux() extends Foo with Bar {
type A = Int
}
Wenn einer oder beide der Definitionen in Foo
zu befriedigen und Bar
sind Beton oder begrenzt, dann muss die Definition in Qux
beide erfüllen, zum Beispiel
trait Foo {
type A <: AnyRef
}
trait Bar {
type A <: String
}
case class Qux() extends Foo with Bar {
type A = String // Bounded by both AnyRef and String
}
Da die Kreuzung von Int
und String
leer ist, ist es unwahrscheinlich, dass die Definitionen von Foo
und Bar
von ganz Form in Frage, was Sie suchen, jedoch ist folgende möglich,
trait Foo {
type A <: Int
}
trait Bar {
type A <: String
}
case class Qux() extends Foo with Bar {
type A = Int with String // Uninhabited type
}