scala mutable Map withDefaultValue奇怪的行为

时间:2017-01-11 20:11:25

标签: scala

我有一个使用可变[1,2,3,4,5,6,7,8,9]的示例。 HashMap.withDefaultValue提供了一种即使密钥不存在也能返回值的方法,但它不应修改集合。在任何情况下,都存在冲突的行为,因为withDefaultValues返回0,同时map.size返回一个值。

这怎么可能?

map(key)

1 个答案:

答案 0 :(得分:2)

可以将defaultValue分解出来,因为它是作为值传递的。

import scala.collection.mutable

val defaultValue = mutable.HashMap[Int, String]()
val map = mutable.HashMap[String, mutable.Map[Int, String]]()
          .withDefaultValue(defaultValue)

map("id1")(2) = "three"

哪个给你

println(defaultValue)    // Map(2 -> three)

......应该解释其余的行为。这正是我推荐不可变数据结构的原因; - )