我正在尝试定义一个C
扩展一些特征的特征A
, B
,... 所有特征,C
并且A
, B
,... 实现一个共同的特征T
。TraitC
应该T
通过调用 T
in A
, B
,.. 的实现来实现:
trait T{
def f()
}
trait A extends T{
def f(){
print("A")
}
}
trait B extends T{
def f(){
print("B")
}
}
所需的 trait 行为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()
. 有什么解决办法吗?