返回包含来自另一个的单个修改条目的不可变映射

时间:2015-08-16 22:24:50

标签: scala

我有一个不可变的映射,我希望从中更改单个元素,然后返回另一个不可变映射。我是否坚持复制所有元素两次?<​​/ 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)

只是想知道这是否是我们方法'前沿'不可变性​​的“必需”价格。

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:查看更新后的方法。