我有一个不可变的映射,我希望从中更改单个元素,然后返回另一个不可变映射。我是否坚持复制所有元素两次?</ p>
val inmap = Map('a'->1,'b'->2)
import collection.mutable
val mmap = mutable.Map(inmap.toList:_*)
mmap('b')= 3
val mmap2 = Map(mmap.toList:_*)
mmap2: scala.collection.immutable.Map[Char,Int] = Map(b -> 3, a -> 1)
只是想知道这是否是我们方法'前沿'不可变性的“必需”价格。
答案 0 :(得分:2)
您可以使用更新的方法:
scala> val inmap = Map('a' -> 1, 'b' -> 2)
inmap: scala.collection.immutable.Map[Char,Int] = Map(a -> 1, b -> 2)
scala> val updated = inmap.updated('b', 3)
updated: scala.collection.immutable.Map[Char,Int] = Map(a -> 1, b -> 3)
API doc for Map:查看更新后的方法。