Angenommen, ich habe den folgenden Code:
trait Trait1 {
trait Inner {
val name = "Inner1"
}
}
trait Trait2 {
trait Inner {
val name = "Inner2"
}
}
class Foo extends Trait1 with Trait2 {
// I want Concrete1 to be a Trait1.Inner not a Trait2.Inner
class Concrete1 extends Inner
val c = new Concrete1
}
object Obj {
def main(args: Array[String]): Unit = {
val foo = new Foo
println(foo.c.name)
}
}
Wenn ich untermische Trait1
y Trait2
Bezug nehmend auf Inner
scheint standardmäßig auf die Inner
Typ der jeweiligen Eigenschaft, die ich als zweites mixin aufrufe; wenn ich also Obj
's main
Methode druckt es Inner2
. Wie kann ich mich auf Trait1.Inner
en Foo
? Alle drei der folgenden Beispiele führen zu Compilerfehlern:
class Concrete1 extends Trait1.Inner
class Concrete1 extends Trait1$Inner
class Concrete1 extends Trait1#Inner