Scala 集合将 var 映射到另一个值

标签 scala

我有一个集合col,其元素类型为Foo

Foo 有一个 var bar,我需要为集合中的每个元素更改它。

目前我的代码如下

col.map(baz => {
  baz.bar = <something>
  baz
})

有更好的方法吗?我觉得这可以用一个衬垫来完成。

最佳答案

foreach 是为此类副作用而设计的

col.foreach(_.bar = <something>)

在此 col 之后,所有元素都会发生变化。如果您希望避免 Unit 返回类型,请尝试链接

import util.chaining._
col.map(_.tap(_.bar = <something>))

或者其他方式

col.tap(_.foreach(_.bar = <something>))

惯用的方法是避免 var 并使用不可变的案例类 Foo,然后复制

col.map(_.copy(bar = <something>))

关于Scala 集合将 var 映射到另一个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68040670/

相关文章:

java - 如何在 Java 中创建一个空的不可变 Scala 映射?

scala - 如何在 spark Dataframe 中使用 Except 函数

multithreading - Spark : understanding partitioning - cores

jquery-ui - Lift - 使用 Ajax 提交自动完成

scala - Spark 中的低 CPU 使用率

scala - 具有自定义类型绑定(bind)的无形状映射和子类型多态性

java - Scala 文件不会编译为 out 文件夹中的 .class 文件

scala - 如何谈论伴生对象与常规对象?

scala - Spark Dataframe 中的 minBy 等效项

Scala 特征函数 : return instance of derived type