list1 == list2
要做上述檢查,Scala是否會遍歷這兩個列表並在每對元素上調用equals?Scala的equals方法在List中如何工作?
(我相信,這個問題已經被問過,但我無法找到與谷歌&合作一個很好的答案)
list1 == list2
要做上述檢查,Scala是否會遍歷這兩個列表並在每對元素上調用equals?Scala的equals方法在List中如何工作?
(我相信,這個問題已經被問過,但我無法找到與谷歌&合作一個很好的答案)
您可以通過查看Scaladoc,找出找到這個自己的任何方法在哪裏定義,然後查看源代碼。如果從online docs開始,只需單擊即可完成此操作:轉到該方法,通過單擊左側的箭頭將其打開,您將看到一個覆蓋類的列表。去第一個,看看源頭。
無論如何,在這種情況下,GenSeqLike
,的List
一個supertrait和許多其它集合,equals
定義爲canEqual
支票隨後sameElements
。接下來,sameElements
檢查兩個參數是否爲LinearSeq
s,如果是,則通過將頭部和尾部逐個分開,調用在每對元素上相等。否則,它默認使用迭代器,每個調用hasNext
,然後將這些元素與equals
進行比較。因此,長話短說:是的,它調用每對元素上的等於(一旦發現不匹配就停下來)。
完美,非常感謝。這有很大的幫助(也爲未來的研究)。 –
你看過代碼嗎? Scala是開源的。 –
你有沒有試過運行它? –
@Tyler:是的,但我無法找到正確的代碼片段,因爲List擴展了很多其他類。 –