sh0*_*hei 1 collections scala immutability scala-collections
在Seq中更新(或替换)项目的最佳做法是什么?
case class Minion(id: Int, name: String, motivation: Int)
val minions: Seq[Minion] = Seq(
Minion(1, "Bob", 50),
Minion(2, "Kevin", 50),
Minion(3, "Stuart", 50))
Run Code Online (Sandbox Code Playgroud)
我想收购新的收藏品
Seq(
Minion(1, "Bob", 50),
Minion(2, "Kevin", 50),
Minion(3, "Stuart", 100))
Run Code Online (Sandbox Code Playgroud)
什么是最好的方式?
用途updated:
// first argument is index (zero-based) - so using 2 to replace 3rd item:
scala> minions.updated(2, Minion(3, "Stuart", 100))
res0: Seq[Minion] = List(Minion(1,Bob,50), Minion(2,Kevin,50), Minion(3,Stuart,100))
Run Code Online (Sandbox Code Playgroud)
或者,不重复新的未更改的属性Minion:
scala> minions.updated(2, minions(2).copy(motivation = 100))
res1: Seq[Minion] = List(Minion(1,Bob,50), Minion(2,Kevin,50), Minion(3,Stuart,100))
Run Code Online (Sandbox Code Playgroud)