Scala中的功能样式从方法收集结果



我有两个我zip的列表,并通过zipt zipt zip the zipped结果并调用函数。此功能将返回字符串列表作为响应。我现在想收集我得到的所有响应,我不想拥有某种缓冲区,可以收集每次迭代的响应。

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

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

为什么不使用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()将结果弄平为一个序列。

最新更新