【发布时间】:2015-11-04 22:55:49
【问题描述】:
我今天正在编写一些代码时注意到了这种古怪的行为。嵌套在可变映射中的不可变映射似乎允许(通常是可变的)+= 运算符。
scala> val myMutableMap = mutable.Map[String, scala.collection.immutable.Map[String, String]]()
myMutableMap: scala.collection.mutable.Map[String,scala.collection.immutable.Map[String,String]] = Map()
scala> myMutableMap += "outerkey" -> scala.collection.immutable.Map("k1"-> "v1")
res25: myMutableMap.type = Map(outerkey -> Map(k1 -> v1))
scala> myMutableMap("outerkey") += "k2"->"v2"
scala> myMutableMap
res27: scala.collection.mutable.Map[String,scala.collection.immutable.Map[String,String]] = Map(outerkey -> Map(k1 -> v1, k2 -> v2))
scala> val huhwhat = myMutableMap("outerkey")
huhwhat: scala.collection.immutable.Map[String,String] = Map(k1 -> v1, k2 -> v2)
scala> huhwhat += "k3"->"k4"
<console>:21: error: value += is not a member of scala.collection.immutable.Map[String,String]
huhwhat += "k3"->"k4"
我查看了 Map.scala 源代码,但没有看到任何关于 += 运算符可以从何处继承的明显答案。
这是在 Scala 2.11.5 上的。有谁知道怎么回事?
【问题讨论】:
标签: scala