如代码所示:
val map = scala.collection.mutable.Map[Int, Int]().withDefaultValue(0) println(map(1)) map(1) = 10 println(map(1)) map(1) += 10 println(map(1))
和输出:
0 10 20
但是,在我看来,"map(1)+ = 10"在java中是无效的,甚至是有效的,这一行之后的结果map(1)应该是10.
所以为什么???以及"+ ="在地图中的确切操作是什么?
首先,+=
是一个赋值运算符,因为它结束于=
并且不是比较运算符.这意味着如果没有合适的方法(并且Int
没有+=
方法),map(1) += 10
则转换为map(1) = map(1) + 10
.通过在规则的分配,这变得map.update(1, map(1) + 10)
与此成为map.update(1, map.apply(1) + 10)
因为map
是一个对象,而不是方法.