由于 Scala 2.13 中已删除了 .deep 方法,那么比较两个数组的最佳方式是什么,使其与 .deep 产生相同的效果? 例如:(在 Scala 2.13 之前,它将按以下方式工作)
scala> Array(Array(1),2).deep == Array(Array(1),2).deep
res3: Boolean = true
一种首选解决方案是使用sameElements方法,但如果数组嵌套,则该方法无法工作。例如:
scala> Array(Array(1),2) sameElements Array(Array(1),2)
res0: Boolean = false
注意:我正在使用Scala 2.13.3。
Array
? - cchantepList
或Vector
或任何其他不可变集合;2)不要创建将某些东西解析为Any
(ADT?)的对象。这样,你就可以自动获得相等性。 - Mateusz Kubuszokwhile
循环和isInstanceOf
检查来实现自己的比较函数。- 使用Arrays的唯一原因是原始性能,“deep”非常慢,因此没有意义。为什么需要Arrays?而且,由于它们是嵌套的,它们都是Array[Any]
,这相当无用和不成体系。- 如果您违反语言规则,语言将反过来影响您。最好修复设计,这样问题就会自行解决。 - Luis Miguel Mejía Suárez