我有两个列表,我压缩并浏览压缩结果并调用函数。此函数返回一个字符串列表作为响应。我现在想要收集我得到的所有响应,并且我不希望有某种缓冲区来收集每次迭代的响应。
seq1.zip(seq2).foreach((x: (Obj1, Obj1)) => {
callMethod(x._1, x._2) // This method returns a Seq of String when called
}
我想要避免的是创建一个ListBuffer并继续收集它。在功能上有任何线索吗?
答案 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()
将结果展平为一个序列。