2010-09-25 7 views
1

J'essaie d'utiliser la méthode de différence (array1 - array2), et cela ne fonctionne pas comme prévu.en utilisant la différence de tableau ([tableau] - [autre tableau]) avec différentes instances équivalentes

Mon test unitaire:

a = DeepsEdge.new(Set[1,2]) 
b = DeepsEdge.new(Set[3,4]) 
c = DeepsEdge.new(Set[3,4]) 
assert a != b, "these are equal and should not be" 
assert_equal c, b 
assert_not_equal a, b 
assert_not_same c, b 
x = [a,b] 
y = [c] 
assert_equal x, [a,c] 
assert_equal y, [b] 
assert b.eql?(c), 'b not eql? to c' #tests up to and including this line pass 
assert_equal x-y, [a] #does not pass 

Je ne sais pas ce qui se passe ici. La classe DeepsEdge inclut des comparables. J'ai surchargé < => et eql ?. Comment puis-je obtenir x-y [a] plutôt que [a, c]?

Répondre

1

Ma conjecture est que, pendant que vous surclastiez eql?, vous avez oublié de surcharger hash.

+0

Oui. C'était ça. – philosodad

Questions connexes