Hello,
I have a Set which should contains elements of my object Component. The
component class implements method hash. I’m gathering data, createing
Componets from them and storing it into the Set. It’s a Set just to
prevent
duplicates. But finally the Set contains duplicate elemets – with the
same
hash value.
Few snippets from the code:
$components = Set.new # declaration of the Set variable
… then some addings to $components …
$components.each {|c| puts(c.name + ‘, class:’ + c.class.name + ‘,
hash:’ +
c.hash.to_s)}
And it prints:
OR-copm2.2, class:Component, hash:304328379
OR-copm2.2, class:Component, hash:304328379
The Component class is defined in this way:
Class Component
attr_reader :attributes, :name, :subcomponents
attr_writer :attributes # array of Attribute objects
def assembly?
@subcomponents.length != 0
end
def object_id
@name.object_id
end
def hash
@name.hash
end
def initialize(name)
@name = name
@attributes = Hash.new
@subcomponents = Array.new
end
end
What am I doing wrong?
Thanks,
Radek