在List的情况下,Scala的equals方法如何工作?

时间:2012-06-20 15:53:55

标签: list scala equals

list1 == list2

要进行上述检查,Scala会遍历两个列表并在每对元素上调用equals吗?

(我相信,之前已经问过这个问题,但我找不到Google& Co的好答案)

1 个答案:

答案 0 :(得分:31)

您可以通过查看Scaladoc并查找其定义位置,然后查看源代码来自行查找任何方法。如果您从online docs开始,只需单击即可完成此操作:转到方法,单击左侧的箭头将其打开,您将看到重写类的列表。转到第一个,看看来源。

无论如何,在这种情况下,GenSeqLikeList以及许多其他馆藏的超级列表,将equals定义为canEqual支票,然后是sameElements。反过来,sameElements检查两个参数是否都是LinearSeq s,如果是,则通过逐个分开头部和尾部来调用每对元素。否则,它默认使用迭代器,在每个迭代器上调用hasNext,然后将元素与equals进行比较。

所以,长话短说:是的,它在每对元素上调用等于(一旦发现不匹配就停止)。