Вы можете прочитать здесь:
http://ofps.oreilly.com/titles/9780596155957/AdvancedObjectOrientedProgramming.html#EqualityOfObjects
но похоже, что если вы сделали:
filesHere.sameElements(filesHere2)
что это должно быть правдой.
Javadoc для этого здесь:
http://www.scala -lang.org / апи / 2.6.0 / Скала / IterableProxy.html # sameElements% 28Iterable% 5BB% 5D% 29
UPDATE: * ** 1015 1016 *
Несколько фрагментов из первой ссылки, которые могут быть полезны:
В Java, C ++ и C # оператор == проверяет ссылки, а не равенство значений. В отличие от этого, оператор Ruby == проверяет равенство значений. Какой бы язык вы ни использовали, помните, что в Scala == проверяет равенство значений.
В отношении ==
не работает должным образом в списках:
Хотя это может показаться противоречивым, поощрение явного теста на равенство двух изменяемых структур данных является консервативным подходом со стороны разработчиков языка. В конечном счете, это должно спасти вас от неожиданных результатов в ваших условных выражениях.
ОБНОВЛЕНИЕ 2:
Основываясь на комментариях от Рафаэля, я посмотрел спецификацию, и она была датирована двумя днями назад для самого последнего обновления, и я вижу их в http://www.scala -lang.org / files / archive / nightly / pdfs /ScalaReference.pdf:
Method equals: (Any)Boolean is structural equality, where two instances
are equal if they both belong to the case class in question and they have equal
(with respect to equals) constructor arguments.
class AnyRef extends Any {
def equals(that: Any): Boolean = this eq that
final def eq(that: AnyRef): Boolean = . . . // reference equality
Итак, похоже, что определение не изменилось в Scala 2.10.2, так как спецификация кажется согласованной. Если поведение отличается, то если вы пишете модульный тест, его следует отправить как ошибку для Scala.