我正在使用 ++:
运算符获取两个集合的集合,但是我使用这两种方法得到的结果不一致:
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)
为什么要
++:
和 ++:=
运营商给出不同的结果?这种区别在
++
中不会出现运算符(operator)。我使用的 Scala 版本是 2.11.8。
最佳答案
由于它以冒号结尾,++:
是右结合的。这意味着 Array(1, 2) ++: Array(3)
相当于 Array(3).++:(Array(1, 2))
. ++:
可以认为是“将左侧数组的元素添加到右侧数组中”。
由于它是右结合的,r ++:= Array(3)
脱糖至 r = Array(3) ++: r
.当您考虑到 ++:
的目的时,这是有道理的。正在准备中。这种脱糖适用于任何以冒号结尾的运算符。
如果要追加,可以使用 ++
(和 ++=
)。
关于arrays - 为什么++ : operator in the Scala language so strange?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53332346/