我有一个集合 col
,其中包含类型为 Foo
的元素。
Foo
有一个 var bar
,我需要为集合中的每个元素更改它。
目前我的代码是这样的
col.map(baz => {
baz.bar = <something>
baz
})
有没有更好的方法来做到这一点?我觉得这可以用一个衬垫来完成。
答案 0 :(得分:4)
foreach
专为此类副作用而设计
col.foreach(_.bar = <something>)
在此 col
之后,所有元素都将发生变异。如果您希望避免 Unit
返回类型,请尝试链接
import util.chaining._
col.map(_.tap(_.bar = <something>))
或其他方式
col.tap(_.foreach(_.bar = <something>))
惯用的方法是避免 var
并具有不可变的案例类 Foo
然后 copy
col.map(_.copy(bar = <something>))