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