我正在尝试写一个看起来像这样的东西:
trait interface {
getA(a:_): trA
}
trait trA extends (x => y)
并且该特性被实现为:
object obX extends interface {
override def getA(a:_): x => y = X => ???
}
然而,我得到错误
Overriding type a => x => y does not conform to base type a => trA
即使CCD_ 1接收CCD_。有办法绕过这个吗?是我修改特征界面的唯一选项,比如:
trait interface {
getA(a:_): x => y
}
提前感谢!
即使
trA
接收x => y
。
这是错误的。trA
是x => y
,但相反的情况是不是真:x => y
是<em]不是>trA
。trA
不能从trA
0生成。
您使用比interface
允许的更宽的返回类型定义obX
。
例如,如果您可以使trA
不扩展x => y
,而是使其成为,则您的代码将被编译
type trA = x => y
否则,您可以引入一种类型的
trait interface {
type Out >: trA
def getA(a: _): Out
}
object obX extends interface {
type Out = x => y
override def getA(a: _): x => y = X => ???
}