基本上这就是我想要做的。 具有成员和特征的特征,该特征继承该成员并对其进行初始化。 然后是一个类,它采用必须从第一个特征继承的泛型类型并访问该成员
object main extends App{
val z = new c[b]()
z.p()
}
trait a{
val x : String
}
trait b extends a {
val x = 1
}
class c [A <: a] {
self: A =>
def p(): Unit ={
print(x)
}
}
但在行
val z = new c[b]()
c [b]带下划线,编译器抱怨
&#34;非法继承,自我类型c [b]不符合A&#34;
我想定义从父特征继承的多个特征,然后定义一个接受父子特征之一并访问其值的类
答案 0 :(得分:1)
我找到了答案,我只需在创建对象时扩展对象,如下所示:
object main extends App{
val z = new c[b] with b
z.p()
}
trait a{
val x : String
}
trait b extends a {
val x = "1"
}
class c[A <: a]{
this: A =>
def p(): Unit ={
print(x)
}
}