From: Joel VanderWerf Date: 2006-12-20T04:37:24+09:00 Subject: Re: compare two objects without take its ID in consideration Lobosque Lucas wrote: > Is there a way to compare two objects without take its ID in > consideration? For example: > > # == > # > > It'll return false, because the object ID is different. But i want it to > return true, because the arguments (is it the right name?) are all > equal. This is one pattern I use, and (because it defines #eql? and #hash) it also gives you the hashing behavior you will probably want to go with it: module ContentEquality def hash content.hash end def eql?(other) other.class == self.class and content.eql? other.content end def ==(other) other.class == self.class and content == other.content end end class Game include ContentEquality def initialize str, mdfel, name @str, @mdfel, @name = str, mdfel, name end def content [@str, @mdfel, @name] end end g1 = Game.new "foo", "bar", "baz" g2 = Game.new "foo", "bar", "baz" p g1 == g2 # ==> true h = {} h[g1] = true p h[g2] # ==> true -- vjoel : Joel VanderWerf : path berkeley edu : 510 665 3407