晚上review代码时发现的一个问题,同事写的一段代码简化后如下:var map = scala.collection.immutable.Map[Int,Int]()
map += (1->2)
map += (3->4)
...
if (xxx) map.get(..)这里逻辑上感觉有问题,map这里用的不可变集合,+=方法应该是返回一个新的值,后边的get应该不能生效。另外觉得+=这个方法似乎应该只在mutable集合下才有,试图在eclipse下点击进入这个+=方法看看,果然也无法进入。因为代码上下文逻辑较多,不确定是不是上下文有影响,于是在repl下验证一下这个方法。scala> val m = scala.collection.immutable.Map[Int,Int]()
scala> m += (1->1):12: error: value += is not a member of scala.collection.immutable.Map[Int,Int]
m += (1->1)
^提示说Map没有这个方法,奇怪为何那段代码在eclipse编译没有问题。然后注意到同事用的是var修饰的map。修改为var之后可以使用+=了,看一下编译器怎么翻译的:scala> import reflect.runtime.uni
...
继续阅读
(68)