是否可以更新返回新地图的插图



我注意到 Map 特征中有两种方法。 + 和更新。 两者都做同样的事情,它们返回一个新映射,其中的值已更改或添加与给定键相对应。那么,有没有一种我没有看到的新方法可以使句子 1 或 2 成为真的,以避免做句子 3

var a = Map[Int,Int](1 -> 4, 2 -> 1)
a == a.updated(1,23)  //sentence 1
a == a+(1->23)        //sentence 2
a = a+(1->23)         //sentence 3

可能会有一个讨论,我为什么要那个,我只是好奇。很高兴有这种建设性的形式,但我想知道去破坏的版本。

使用scala.collection.mutable.Map

import scala.collection.mutable.Map
var a = Map[Int, Int](...)
...

Scala 集合库默认使用集合的不可变版本。 您必须指定可变版本。

您可以只导入可变地图...

scala> import Scala.collection.mutable.Map
scala> Map(1 -> "string")
res0: scala.collection.mutable.Map[Int,java.lang.String] = Map(1 -> string)

尽管这会隐藏默认的 Map 命名空间,从而使创建不可变映射变得更加困难。 您每次都可以指定全名(scala.collection.mutablescala.collection.immutable),这可以通过战略导入变得更加轻松......

umport collection._
val m1: mutable.Map[Int, String] = mutable.Map(1 -> "string")
val m1: immutable.Map[Int, String] = immutable.Map(1 -> "string")

最新更新