2015-08-16 53 views
0

我有一個不可改變的映射,我想從中更改單個元素,然後返回另一個不可變映射。我堅持複製所有元素兩次?從另一個返回包含單個修改條目的不可變映射

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) 

只是想知道這是否是我們方法'邊界'上不可變的「必需」價格。

回答

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:着眼於更新的方法。

+0

你把它倒過來:char - > Int - 反之亦然! – javadba

+0

我在那裏玩的傢伙 - 不需要切換回去。 – javadba

相關問題