1
我試圖定義一個特質C
延伸部分性狀A
,B
,...所有特質,C
和A
,B
,...實現一個共同的特點T
。特質C
應該通過調用T
的實現在A
,B
實施T
,..:斯卡拉性狀和名稱衝突的抽象類型
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()
。 有沒有解決這個問題的方法?