加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

array – 为什么`Array(0,1,2)== Array(0,1,2)`不返回预期的结果

发布时间:2020-12-16 09:47:30 所属栏目:安全 来源:网络整理
导读:据我所知,Scala的==定义了两个对象的自然相等。 我期望Array(0,1,2)== Array(0,2)比较自然等式。例如,检查与其他数组的相应元素相比,数组的所有元素是否都返回true。 人们告诉我,Scala的数组只是一个Java [],只比较身份。是不是更有意义的重写Array’se
据我所知,Scala的==定义了两个对象的自然相等。

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

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

解决方法

Scala 2.7试图向Java []数组添加功能,并且遇到了有问题的角落。 Scala 2.8声明Array [T]是T [],但它提供包装器和等效。

尝试下面2.8(编辑/注:从RC3,GenericArray是ArraySeq – 感谢retronym指出这一点):

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

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

GenericArray的行为就像Array,除了所有的Scala集合好处添加进来。WrappedArray wraps Java [] array;上面,我把一个简单的数组给它(比调用隐式转换函数容易),然后比较包装的数组。这些包装,尽管支持一个[]数组,也给你所有的收集好东西。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读