Я хочу создать новую коллекцию Scala из существующей коллекции Seq. У меня есть черта по имени реф, который содержит данные, как показано нижеСоздать пользовательскую коллекцию Seq в Scala
trait Ref[A] {
def get: A
def getAsOption: Option[A]
def dataType: Class[A]
// other methods
}
Моей пользовательской подборки Vec, который представляет собой последовательность из работы [A] (т.е. Vec [A] приравненные к последу [Ref [A]]), причина, по которой я хочу создать такую коллекцию, как это, потому что я хочу сохранить параметр типа в коллекции Ref для обработки в пользовательских методах. Мой код ниже
trait VecLike[A, +Repr <: Seq[Ref[A]]]
extends SeqLike[Ref[A], Repr]
with TraversableLike[Ref[A], Repr] {
// custom methods
}
trait GenVec[A]
extends VecLike[A, Seq[Ref[A]]]
with Seq[Ref[A]]
with PartialFunction[Int, Ref[A]]
abstract class AbstractVec[A](vec: Ref[A]*)
extends AbstractSeq[Ref[A]]
with GenVec[A] {...}
class Vec(vec: Ref[A]*)
extends AbstractVec[A](vec:_*)
with VecLike[A, Vec[A]]
with GenericTraversableTemplate[Ref[A], Seq]
Но когда я называю карту функция()
Vec(1,2,3,4).map(intToString)
Он возвращает Seq [String], ожидаемый результат Vec [String]. Я также попытался создать пользовательский CanBuildFrom в сопутствующем объекте с SeqFactory [Seq], но он не удался. :(:(
Может кто-нибудь дать мне несколько советов по этому поводу, и как я могу осуществить для достижения этой цели?
я собирался оценить автор этого комментария, а затем понял, что это от @Dima. Какое совпадение? О, это, лучший ответ на этот вопрос. –