Подтвердить что ты не робот

Как Scala равен работе метода в случае списка?

list1 == list2

Чтобы выполнить указанную выше проверку, будет ли Scala проходить через оба списка и принимать равные по каждой паре элементов?

(я уверен, этот вопрос задавали раньше, но я не мог найти хороший ответ с Google и Co)

4b9b3361

Ответ 1

Вы можете найти это самостоятельно для любого метода, посмотрев на Scaladoc и узнав, где он определен, и затем посмотрите на источник. Если вы начинаете с онлайн-документов, вы можете сделать это все, просто щелкнув: перейдите к методу, откройте его, нажав на стрелку на слева, и вы увидите список переопределяющих классов. Перейдите к первому и посмотрите на источник.

В любом случае, GenSeqLike, supertrait of List и многие другие коллекции, определяет equals как проверку canEqual, за которой следует sameElements. В свою очередь, sameElements проверяет, являются ли оба аргумента LinearSeq s, и если это так, вызовы равны по каждой паре элементов, разбивая голову и конец отдельно друг на друга. В противном случае он по умолчанию использует итераторы, вызывая hasNext для каждого, а затем сравнивая элементы с equals.

Итак, длинный рассказ: да, он называет равенства для каждой пары элементов (останавливаясь, как только обнаруживает несоответствие).