scala - Scala 中的 Foreach 与 Map

标签 scala

这个问题在这里已经有了答案:





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/

相关文章:

Scala:获取内部类型的 TypeTag

类型别名的 Scala 隐式转换

scala - 抽象类型构造函数

scala - 如何在 slick 之上创建一个可以全局应用的缓存层?

for理解语句中的Scala语法问题

javascript - 独立于编程语言的模型验证

scala - Scala 中的 Array 和 Array[Type] 有什么区别?

Scala mutable BitSet,变异操作在哪里?

scala - 如何使用Spark从HDFS读取数据?

scala - Swagger 将 Option[Int] 建模为 Object,而 Option[String] 被正确建模为字符串