嗨,所以我有一个特征,它会将自身的某些表示形式作为类型参数。我还封装了一个协变类型。
这是我的代码:
trait ThingLike[+T, Repr <: ThingLike[T, Repr] {
def +[S >: T](elem: S): Repr
def +[S >: T](elem: S, elem2: S, elem3: S*): Repr = elems.foldLeft[Repr](this + elem + elem2)(_ + _)
}
我可以想象上面的作品,但是sbt编译器不断抱怨:
[error] found : S
[error] required: String
[error] def +[S >:T](elem: S, elem2: S, elems: S*): Repr = elems.foldLeft[Repr](this + elem)(_ + _)
我什至尝试了以下变体:
trait ThingLike[+T, Repr <: ThingLike[T, Repr] {
def +[S >: T, SRepr <: ThingLike[S, Repr]](elem: S): SRepr
def +[S >: T, SRepr <: ThingLike[S, Repr]](elem: S, elem2: S, elem3: S*): SRepr = elems.foldLeft[SRepr](this + elem + elem2)(_ + _)
}
不确定为什么String类型与所概述的问题有关。很晚了。有解决这个问题的优雅方法吗?谢谢!