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

Scala中用于从方法收集结果的函数样式,scala,collections,Scala,Collections,我有两个列表,我压缩并遍历压缩后的结果,然后调用一个函数。此函数返回字符串列表作为响应。我现在想收集我得到的所有响应,我不想有某种缓冲区来收集每次迭代的响应 seq1.zip(seq2).foreach((x: (Obj1, Obj1)) => { callMethod(x._1, x._2) // This method returns a Seq of String when called } 我想要避免的是创建一个ListBuffer并继续收集它。在功能上有什么线索吗?为什么不

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

seq1.zip(seq2).foreach((x: (Obj1, Obj1)) => {
  callMethod(x._1, x._2) // This method returns a Seq of String when called
}
我想要避免的是创建一个ListBuffer并继续收集它。在功能上有什么线索吗?

为什么不使用将每个输入转换为相应的输出?下面是在一个简单场景中运行的
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()
将结果展平为一个序列。

只需使用
.map
而不是
.foreach
。或者您甚至可以使用
.flatMap
列表[Seq[String]]
展平到
列表[String]