我注意到 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.mutable
或scala.collection.immutable
),这可以通过战略导入变得更加轻松......
umport collection._
val m1: mutable.Map[Int, String] = mutable.Map(1 -> "string")
val m1: immutable.Map[Int, String] = immutable.Map(1 -> "string")