代表性特征的协变量问题

时间:2018-09-24 04:32:51

标签: scala generics covariance type-parameter

嗨,所以我有一个特征,它会将自身的某些表示形式作为类型参数。我还封装了一个协变类型。

这是我的代码:

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类型与所概述的问题有关。很晚了。有解决这个问题的优雅方法吗?谢谢!

0 个答案:

没有答案