我想与类OutsideUsedWithBase
共享Base类中定义的类型trait Base[A] {
type BaseType = A
}
trait SometimesUsedWithBase {
this: Base[_] =>
def someFunction(in: BaseType): BaseType
}
class StringThing extends Base[String] with SometimesUsedWithBase {
def someFunction(in: String): String = "" + in
}
此解决方案正常工作,直到我将参数添加到BaseType类型的someFunction。 (所以如果你删除参数,代码工作正常)。现在我收到了这个错误:
错误:(7,21)协变类型_ $ 1出现在逆变位置 在def中键入CertainUsedWithBase.this.BaseType值 someFunction(in:BaseType):BaseType ^
我有什么想法可以完成我想做的事情?
答案 0 :(得分:1)
这是工作代码:
trait Base {
type BaseType
}
trait SometimesUsedWithBase { this: Base =>
def someFunction(in: BaseType): BaseType
}
class StringThing extends Base with SometimesUsedWithBase {
type BaseType = String
def someFunction(in: String): String = "" + in
}
我认为你不应该同时使用泛型类型参数并将其分配给一个类型,你有两次相同的信息。
要使用泛型,你需要设置你不想要的类型,但它也可以编译
trait Base[A]
trait SometimesUsedWithBase[A] { this: Base[A] =>
def someFunction(in: A): A
}
class StringThing extends Base[String] with SometimesUsedWithBase[String] {
def someFunction(in: String): String = "" + in
}