1

我注意到 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

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

4

2 回答 2

4

利用scala.collection.mutable.Map

import scala.collection.mutable.Map
var a = Map[Int, Int](...)
...
于 2013-09-12T07:12:09.790 回答
2

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

您可以只导入可变 Map ...

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")
于 2013-09-12T10:36:53.557 回答