Hi everyone,
My question is more about Ruby than Rails...
I've got arrays of objects and I'm trying to do array differences. What
do I need to override in my objects for array differences to work?
(where I want equality based on attributes not object ids) I thought it
was == but it doesn't seem to be working - please hit me with a clue
stick :-)
A bit more detail:
Using simple arrays you can do array differences (and additions, unions,
etc):
>> a1 = %w[a b]
>> a2 = %w[a c]
>> a1 - a2
=> ["b"]
Using a class like this:
class Host
attr_accessor :name
def initialize(hostname)
@name = hostname + '.company.com.au'
end
def ==(h)
@name == h.name
end
end
I would've thought differences of arrays of Hosts would then work, but no:
>> hosts = [ Host.new('a'), Host.new('b') ]
=> [#<Host:0xb705b5ec @name="a.company.com.au">, #<Host:0xb705b588
@name="b.company.com.au">]
>> hosts2 = [ Host.new('a'), Host.new('c') ]
=> [#<Host:0xb7057fc8 @name="a.company.com.au">, #<Host:0xb7057f64
@name="c.company.com.au">]
>> p hosts - hosts2
[#<Host:0xb705b5ec @name="a.company.com.au">, #<Host:0xb705b588
@name="b.company.com.au">]
The == is however working:
>> h1 = Host.new('a')
=> #<Host:0xb7086800 @name="a.company.com.au">
>> h2 = Host.new('a')
=> #<Host:0xb7084a28 @name="a.company.com.au">
>> h1 == h2
=> true
--
Sonia Hamilton.
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "Ruby
or Rails Oceania" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/rails-oceania?hl=en
-~----------~----~----~----~------~----~------~--~---