考虑以下代码,该代码计算列表中每个字符串的频率并将结果存储在可变映射中。这很好用,但我不明白 += 方法是在哪里定义的?!这是一些奇怪的隐式转换还是什么?我在某处看到了这段代码,但它没有包含对 += 的解释。
val list = List("a", "b", "a")
val counts = new scala.collection.mutable.HashMap[String, Int]().withDefaultValue(0)
list.foreach(counts(_) += 1)
counts
//> res7: scala.collection.mutable.Map[String,Int] = Map(a -> 2, b -> 1)
map 的 apply 返回一个 Int,但 Int 没有 +=,并且此方法使用新值更新 map,因此看起来 apply 返回一个具有 += 方法的可变整数......