Проблема с ковариантным представительным признаком - PullRequest
0 голосов
/ 24 сентября 2018

Привет, поэтому у меня есть черта, которая принимает некоторое представление о себе как параметр типа.У меня также есть ковариантный тип, который он инкапсулирует.

Вот мой код:

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 связан с описанными проблемами.Это немного поздно ночью.Любой изящный способ решить это?Спасибо!

...