2

基本问题,我很惊讶 Scala 似乎支持容器类中的元素相等。例如:

Seq(1,2,3)==List(1,2,3) //true
Vector(1,2,3) ==List(1,2,3) //true

尽管正如我所怀疑的那样,Array 甚至无法对抗自己。

Array(1,2,3) == Array(1,2,3) //false

可变到不可变似乎有效:

scala.collection.mutable.MutableList(1,2,3)==List(1,2,3)

无论如何,我可以对此做出什么样的假设?这是测试内容平等的安全方法还是需要避免一些警告?虽然这看起来很直观,但我想知道这些简单示例是否存在一些问题。如果你有一个列表列表,Scala 会进行深度比较扫描吗?

谢谢!

4

1 回答 1

0

事后看来,我应该在谷歌中搜索“集合平等 scala”这个词,因为我在发布(在我的搜索中)之前不知何故错过了这个答案——但这是我今天发现的,所以我会关闭它。

集合库对相等和散列有统一的方法。这个想法首先是将集合划分为集合、映射和序列。不同类别的集合总是不平等的。比如 Set(1, 2, 3) 不等于 List(1, 2, 3)...... http://docs.scala-lang.org/overviews/collections/equality.html

于 2013-09-25T04:21:39.623 回答