использование разности массивов ([массив] - [другой массив]) с разными эквивалентными экземплярами - PullRequest
1 голос
/ 25 сентября 2010

Я пытаюсь использовать разностный метод (массив1 - массив2), и он не работает должным образом.

Мой модульный тест:

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  

Я неуверен, что здесь происходит.Класс DeepsEdge включает в себя сопоставимые.Я перегружен <=> и eql ?.Как я могу получить xy, чтобы вернуть [a], а не [a, c]?

1 Ответ

1 голос
/ 25 сентября 2010

Полагаю, что пока вы переопределяете eql?, вы забыли переопределить hash.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...