У меня есть черта, как следующийпостроение пустого значения типа, который реализует Seq
private class SeqConverter[T](implicit val conv : Converter[T]) extends Converter[Seq[T]] {
def toJs(x: Seq[T]): JsAny = {
x.foldLeft(JsArray[JsAny]()) { (acc, next) =>
acc.+:(conv.toJs(next))
}
}
def toScala(x: JsAny): Seq[T] = {
val arr = x.asInstanceOf[JsArray[JsObject]]
var lst = List[T]()
arr foreach { x =>
lst = conv.toScala(x) :: lst
}
lst
}
}
Я хочу иметь что-то больше, как это
private class SeqConverter[T, F <: Seq[T]](implicit val conv : Converter[T]) extends Converter[F] {
def toJs(x: F): JsAny = {
x.foldLeft(JsArray[JsAny]()) { (acc, next) =>
acc.+:(conv.toJs(next))
}
}
def toScala(x: JsAny): Seq[T] = {
//need to construct empty F here to build it
}
}
Но проблема у меня нет никакого способа, чтобы получить член F, чтобы начать его формообразование. Есть ли способ, чтобы я мог это существовать? Кажется, должен быть какой-то способ построить пустой член F, чтобы я мог использовать +: чтобы преобразовать из 1 вида последовательности в другую. Есть ли что-нибудь подобное?
какая библиотека Json это используется? –
Кстати, почему это связано с циклом с 'var', а не просто' arr.map (conv.toScala) '? –
Im используя scala js не библиотеку json. JsArray не имеет карты, которая имеет правильный тип для причин JavaScript. Теперь, когда я смотрю, возможно, это возможно сделать с разницей, но не могу использовать карту – Jake