我想与类SometimesUsedWithBase 共享在类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出现在type SometimesUsedWithBase.this.Base定义中的值类型someFunction(in:BaseType):BaseType^
有什么想法可以让我完成我想要做的事情吗?
以下是工作代码:
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
}