xue*_*est 4 arrays collections scala assignment-operator
我使用++:运算符来获取两个集合的集合,但是我使用这两个方法获得的结果是不一致的:
scala> var r = Array(1, 2)
r: Array[Int] = Array(1, 2)
scala> r ++:= Array(3)
scala> r
res28: Array[Int] = Array(3, 1, 2)
scala> Array(1, 2) ++: Array(3)
res29: Array[Int] = Array(1, 2, 3)
Run Code Online (Sandbox Code Playgroud)
为什么++:和++:=运营商会给出不同的结果?++操作员不会出现这种差异.
我使用的Scala版本是2.11.8.
因为它以冒号结束,所以++:是右关联的.这意味着Array(1, 2) ++: Array(3)相当于Array(3).++:(Array(1, 2)).++:可以被认为是"将左数组的元素添加到正确的数组中".
既然它是正确联想的,那r ++:= Array(3)就是贬低r = Array(3) ++: r.当你考虑到++:前期的目的时,这是有道理的.对于任何以冒号结束的操作员来说,这种去除都是适用的.
如果要追加,可以使用++(和++=).