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
equalsf2
であるため、両方を含めるs
べきではありません。
set
カスタムルールで拒否要素を作成する方法は?