gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 13:02:21 24 4
gpt4 key购买 nike

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

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

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

最佳答案

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/2481149/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com