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

标签 arrays scala equals equality

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

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

人们告诉我 Scala 的 Array只是一个 Java []只比较身份。覆盖 Array 不是更有意义吗?的 equals比较自然平等的方法?

最佳答案

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

在 2.8 中尝试以下操作(编辑/注意:从 RC3 开始,GenericArrayArraySeq——感谢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 []大批;上面,我已经将一个普通数组转换为它(比调用隐式转换函数更容易),然后比较包装的数组。这些包装器,虽然由 [] 支持阵列,还给你所有的收藏好东西。

关于arrays - 为什么 `Array(0,1,2) == Array(0,1,2)` 没有返回预期的结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30118015/

相关文章:

java - BST 相等性检查

c - 如何声明固定大小元素的二维数组指针

java - MyBatis 集合转 Array 类型

java - 如何用 2 种类型的 JSONObject 解析 JSONArray?

javascript - 将嵌套 JSON 数组转换为 Chart.js 输入

scala - 如何在 Intellij IDEA 的 Scala 程序中禁用 `: Unit =` 的折叠?

oop - Scala 游戏编程 - 介于 OOP 和 FP 之间

java - 为什么我不能像其他字符串数组一样比较命令行参数?

scala - Scala中的Seq和Set有什么区别

java - 使用 ArrayList<Character> 时标识符无效