De acuerdo con Set doc, los elementos de un conjunto se comparan usando eql?
.Conjunto con regla personalizada
tengo una clase como:
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
En la consola:
f1 = Foo.new
f2 = Foo.new
f1.eql? f2 #=> true
Pero ...
s = Set.new
s << f1
s << f2
s.size #=> 2
Debido a que es igual a f1
f2
, s
debe no incluir tanto de ellos.
¿Cómo hacer que los set
rechacen elementos con una regla personalizada?
¿Qué debo hacer? – apneadiving
@apneadiving Ver mi edición. – Phrogz
¿No puedes simplemente usar '[bar, baz] .hash' como un hash? –