繁体   English   中英

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

[英]How does Scala's equals method work in the case of a List?

list1 == list2

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

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

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

无论如何,在这种情况下, GenSeqLikeList和许多其他集合的supertrait,将equals定义为canEqual检查,后跟sameElements 反过来, sameElements检查两个参数是否都是LinearSeq ,如果是,则通过逐个分割头部和尾部来调用每对元素。 否则,它默认使用迭代器,在每个上调用hasNext ,然后用equals比较元素。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM