根据Set doc,集合中的元素使用eql?
.
我有一个像这样的课程:
class Foo
attr_accessor :bar, :baz
def initialize(bar = 1, baz = 2)
@bar = bar
@baz = baz
end
def eql?(foo)
bar == foo.bar && baz == foo.baz
end
end
在控制台中:
f1 = Foo.new
f2 = Foo.new
f1.eql? f2 #=> true
但...
s = Set.new
s << f1
s << f2
s.size #=> 2
因为f1
equals f2
,不s
应该同时包含它们。
如何set
使用自定义规则制作拒绝元素?