1

我收到了来自服务的 CSV 响应,我想生成一个案例类列表。例如:

case class MyCaseClass(e1: String, e2: String, e3: String)

val body = getLargeCsvFromServiceOrSomething()
val elements = body.split(",")

现在我有一个Array[String]. 我想把那个大数组分解成 3 个元素卡盘,这样我就可以生成我List[MyCaseClass]的 ,每个实例从数组中获取 3 个元素。有没有类似的方法splitAt,但每 n 个元素吐一次?我确信我可以做到这一点,但它只是不来找我。

4

1 回答 1

4

你想要的是grouped

scala> List(1,2,3,4,5,6,7).grouped(3).toList
res0: List[List[Int]] = List(List(1, 2, 3), List(4, 5, 6), List(7))

所以你的事情可能是这样的:

val elements = Array("a","b","c","d","e","f")
val classes = elements.grouped(3).map{ case Array(a,b,c) => MyCaseClass(a,b,c) }    
println(classes.toList) // List(MyCaseClass(a,b,c), MyCaseClass(d,e,f))
于 2012-04-14T16:33:35.633 回答