Scala似乎查看的Seq
与单个对象的值相同,但与Array
的视图不同。
Seq
的行为与List
,Set
相同。
scala> Array(1) == Array(1)
res2: Boolean = false
scala> Seq(1) == Seq(1)
res3: Boolean = true
为什么会发生?到底是什么原因?
答案 0 :(得分:5)
这是因为Array本质上是Java数组的别名,该数组将equals实现为引用相等-仅当两个变量指向同一数组实例时才返回true。
数组是==
为其检查引用相等性的唯一Scala集合,对于它委托给.equals的所有其他集合,它均检查值的相等性。
尽管如此,Scala 2.13引入了表现不出所料的不可变数组。
目前,您可以使用.sameElements
或.deep
进行比较。