为什么 `Array(0,1,2) == Array(0,1,2)` 没有返回预期结果?

2023-12-24

据我了解,Scala 的==定义两个对象的自然平等。

我期望Array(0,1,2) == Array(0,1,2)比较自然平等。例如,检查与另一个数组的相应元素比较时数组的所有元素是否返回 true。

人们告诉我 Scala 的Array只是一个Java[]仅比较身份。重写不是更有意义吗Array'sequals方法来比较自然平等?


Scala 2.7 尝试向 Java 添加功能[]数组,并遇到了有问题的极端情况。 Scala 2.8 已经声明Array[T] is T[],但它提供了包装器和等效物。

在 2.8 中尝试以下操作(编辑/注意:从 RC3 开始,GenericArray is ArraySeq——感谢 Retronym 指出了这一点):

import scala.collection.mutable.{GenericArray=>GArray, WrappedArray=>WArray}
scala> GArray(0,1,2) == GArray(0,1,2)
res0: Boolean = true

scala> (Array(0,1,2):WArray[Int]) == (Array(0,1,2):WArray[Int])
res1: Boolean = true

GenericArray行为就像Array,除了添加了所有 Scala 集合的好东西。WrappedArray包装Java[]大批;上面,我将一个普通数组转换为它(比调用隐式转换函数更容易),然后比较包装的数组。这些包装虽然有[]数组,还给你所有的收藏好东西。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么 `Array(0,1,2) == Array(0,1,2)` 没有返回预期结果? 的相关文章

随机推荐