Scala: Contém em conjuntos mutáveis e imutáveis
escobri um comportamento estranho para conjuntos mutáveis que não consigo entende
Tenho um objeto que quero adicionar a um conjunto. O método equals para a classe é substituído. Quando adiciono dois objetos diferentes ao conjunto, que produz a mesma saída para o método equals, recebo um comportamento diferente entre conjuntos mutáveis e imutáveis para o método contain
Aqui está o trecho de código:
class Test(text:String){
override def equals(obj:Any) = obj match {
case t: Test => if (t.text == this.text) true else false
case _ => false
}
override def toString = text
}
val mutableSet:scala.collection.mutable.Set[Test] = scala.collection.mutable.Set.empty
mutableSet += new Test("test")
println(mutableSet)
println(mutableSet.contains(new Test("test")))
val immutableSet:scala.collection.immutable.Set[Test] = scala.collection.immutable.Set.empty
immutableSet += new Test("test")
println(immutableSet)
println(immutableSet.contains(new Test("test")))
Isso produz como saída:
Set(test)
false
Set(test)
true
Na minha opinião, ambas as chamadas de contains devem produzir a mesma saída (true
Alguém poderia me ajudar a entender a diferença aqui ou isso é um bug na implementação do conjunto imutável do scala? A propósito, eu uso o scala 2.8.1.final
Obrigado