Scala-玩:如何将表单字段绑定到Vector?

时间:2018-10-16 19:53:44

标签: forms scala vector playframework binding

在Play 2.6中,重复元素的默认表单绑定是SeqListSet,例如:

Form(
  "name" -> seq(text)
)

但是我在几种情况下使用Vector集合类型,因为它的整体性能(例如,基于索引的访问)比SeqIterable的默认实现{{1 }}(如果处理索引搜索,则在处理Head或Tail元素时表现良好,线性时间)。

在当前的Play 2.6中,ListVector(默认为IndexedSeq)没有任何默认的Form绑定。

映射Vector的默认方法是什么?

1 个答案:

答案 0 :(得分:1)

您可以像这样定义自己的映射,

def vector[A](mapping: Mapping[A]): Mapping[Vector[A]] =
  RepeatedMapping(mapping).transform(_.toVector, _.toList)

然后像这样使用它

Form(
  "name" -> vector(text)
)