セルフタイプのトレイトがあり、メソッドの1つをオーバーライドしたとします。
trait A {
def foo() { println("A") }
}
trait B { this: A =>
override def foo() {
println("B")
}
}
object Test {
def main (args: Array[String]) {
val b = new A with B {}
b.foo()
}
}
これまでのところ、コンパイルして出力に「B」を生成します。しかし、次のようなことを行うために、から「シャドウ」メソッドを呼び出すにはどうすればよいA
ですか。
trait A {
def foo() { println("Hello, ") }
}
trait B { this: A =>
override def foo() {
//here I'd like to do something like super.foo()
println("world!")
}
}
object Test {
def main (args: Array[String]) {
val b = new A with B {}
b.foo() //Should print "Hello, world!"
}
}
オーバーライドを呼び出すことさえ可能foo
ですか?または、これを可能にするために、セルフタイプよりも継承を優先する必要がありますか?