Чтобы выполнить указанную выше проверку, будет ли Scala проходить через оба списка и принимать равные по каждой паре элементов?
(я уверен, этот вопрос задавали раньше, но я не мог найти хороший ответ с Google и Co)
Ответ 1
Вы можете найти это самостоятельно для любого метода, посмотрев на Scaladoc и узнав, где он определен, и затем посмотрите на источник. Если вы начинаете с онлайн-документов, вы можете сделать это все, просто щелкнув: перейдите к методу, откройте его, нажав на стрелку на слева, и вы увидите список переопределяющих классов. Перейдите к первому и посмотрите на источник.
В любом случае, GenSeqLike, supertrait of List и многие другие коллекции, определяет equals как проверку canEqual, за которой следует sameElements. В свою очередь, sameElements проверяет, являются ли оба аргумента LinearSeq s, и если это так, вызовы равны по каждой паре элементов, разбивая голову и конец отдельно друг на друга. В противном случае он по умолчанию использует итераторы, вызывая hasNext для каждого, а затем сравнивая элементы с equals.
Итак, длинный рассказ: да, он называет равенства для каждой пары элементов (останавливаясь, как только обнаруживает несоответствие).