这个问题在这里已经有了答案:
Is there a difference between foreach and map?
(9 个回答)
4年前关闭。
我尝试了两种方法来制作 list
var response = List[RS_TxnNested]
consumertxnlist.foreach(txData => {
response = RS_TxnNested(blabla) +: response
})
其中 consumertxnlist 是 Seq[something] 。
另一种方式是
var response = consumerTxnList._2.map(txData => RS_TxnNested(blabla))
有人可以帮助我澄清哪个更好,为什么?
最佳答案
正如您已经注意到的,Seq trait 中的 map 函数返回一个值。它的签名实际上是def map[B](f: (A) ⇒ B): Seq[B]
它旨在将函数应用于扩展 Seq 特征的集合的每个元素并返回一个新集合。
另一方面,foreach 具有相同的特征,具有以下签名:def foreach(f: (A) ⇒ Unit): Unit
这意味着它旨在执行具有副作用的功能。
在您的示例中,您将值分配给“响应”的操作视为副作用。如果您的实际目标是返回一个值(就像您想要做的那样),那么使用 map。
关于scala - Scala 中的 Foreach 与 Map,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44042568/