我有一个集合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/