斯卡拉自我通用的非法继承
基本这是我正在尝试做的。 具有成员和另一个继承该成员并初始化该成员的特征的特征。 然后是一个类,该类需要一个必须从第一个特征继承并访问该成员的泛型类型
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]加下划线,编译器抱怨
“非法继承,自我类型c [b]不符合A”
我想定义从父特征继承的多个特征,然后定义一个接受父特征之一并访问其值的类
我找到了答案,我只需在创建对象时扩展对象,如下所示:
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)
}
}
链接地址: http://www.djcxy.com/p/51031.html