Es posible que desee leer aquí:
http://ofps.oreilly.com/titles/9780596155957/AdvancedObjectOrientedProgramming.html#EqualityOfObjects
pero parece que si lo hizo: filesHere.sameElements(filesHere2)
que debería ser cierto.
el Javadoc para esto está aquí: http://www.scala-lang.org/api/2.6.0/scala/IterableProxy.html#sameElements%28Iterable%5BB%5D%29
ACTUALIZACIÓN:
Un par de fragmentos desde el primer eslabón que puede ser útil:
En Java, C++ y C# el operador == prueba para referencia, no para valor igualdad. Por el contrario, el operador = = de Ruby prueba la igualdad de valores. Independientemente del idioma al que esté acostumbrado, recuerde que en Scala, == está probando la igualdad de valores.
En referencia al ==
no funciona como se esperaba en Listas:
Si bien esto puede parecer una contradicción, fomentando una prueba explícita de la igualdad de las dos estructuras de datos mutables es un enfoque conservador por parte de la diseñadores de idiomas. A la larga, debería salvarte de resultados inesperados en tus condicionales.
ACTUALIZACIÓN 2:
Basándose en los comentarios de Rafael Miré a la especificación, y estaba fechada dos días antes de la actualización más reciente, y veo estos en 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
Por lo tanto, parece que la definición no ha cambiado en Scala 2.10.2, ya que la especificación parece ser consistente. Si el comportamiento es diferente, entonces, si escribe una prueba unitaria, debe enviarse como un error para Scala.
¡Buen recurso, gracias! Muestra cómo lidiar con el problema mencionado anteriormente (usando sameElements, OK!) Pero no explica por qué el problema (o la "sorpresa") ocurre como en scala> Array (1, 2) == Array (1 , 2) res0: booleano = falso – acherm
@acherm - Es por eso que puse la actualización, la última cita del artículo debe explicar el por qué, para alentar las pruebas explícitas de igualdad. –
Otra discusión interesante aquí: http://scalide.blogspot.com/2009/05/hashcode-equals-in-scala-28-collections.html Eso no aclara completamente la situación, pero ilustra que "la igualdad es una tema interesante, simplemente por la increíble variedad de interpretaciones que hay de él ". En cuanto a Array.scala (http://lampsvn.epfl.ch/trac/scala/browser/scala/tags/R_2_8_0_final/src//library/scala/Array.scala), el método equals() no está definido . – acherm