私はCいくつかの特性を拡張する特性を定義しようとしていますA、、B...すべての特性、C およびA、、B...共通の特性を実装しますT。Traitはin , ,..の実装を呼び出すこと Cで実装されるはずです:TTAB
trait T{
def f()
}
trait A extends T{
def f(){
print("A")
}
}
trait B extends T{
def f(){
print("B")
}
}
トレイトの望ましい動作は次のCとおりです。
val x=new A with B with C[A,B]{}
x.f()
// should produce output
A
B
ここで、コンパイル エラーが発生した特性 C を定義しようとしました。
trait C[A<:T,B<:T] extends T{
self:A with B =>
override def f(){
// error: A does not name a parent class of trait C
super[A].f()
// error: B does not name a parent class of trait C
super[B].f()
}
}
CメソッドA.f()と内で呼び出す必要がありB.f()ます。これに対する解決策はありますか?