Scala中的函数样式用于从方法中收集结果

时间:2014-03-06 10:13:30

标签: scala collections

我有两个列表,我压缩并浏览压缩结果并调用函数。此函数返回一个字符串列表作为响应。我现在想要收集我得到的所有响应,并且我不希望有某种缓冲区来收集每次迭代的响应。

seq1.zip(seq2).foreach((x: (Obj1, Obj1)) => {
  callMethod(x._1, x._2) // This method returns a Seq of String when called
}

我想要避免的是创建一个ListBuffer并继续收集它。在功能上有任何线索吗?

1 个答案:

答案 0 :(得分:3)

为什么不使用map()将每个输入转换为相应的输出?这里的map()在一个简单的场景中运行:

scala> val l = List(1,2,3,4,5)
scala> l.map( x => x*2 )
res60: List[Int] = List(2, 4, 6, 8, 10)

所以在你的情况下它看起来像:

seq1.zip(seq2).map((x: (Obj1, Obj1)) => callMethod(x._1, x._2))

鉴于您的函数返回一个字符串序列,您可以使用flatMap()将结果展平为一个序列。