次のコードがあるとします。
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)
}
}
と を混ぜるTrait1
とTrait2
、 を参照すると、 2 番目にミックスした特性Inner
の型がデフォルトのように見えます。だから私はのメソッドInner
を呼び出すと、それが印刷されます。で参照するにはどうすればよいですか? 次の 3 つすべてでコンパイラ エラーが発生します。Obj
main
Inner2
Trait1.Inner
Foo
class Concrete1 extends Trait1.Inner
class Concrete1 extends Trait1$Inner
class Concrete1 extends Trait1#Inner