From: Jacob Fugal Date: 2006-07-07T03:42:40+09:00 Subject: Re: Achieving Equality On 7/6/06, Chris Hulan wrote: > > I'm can't achieve equlity when: > > > > a, b = 1, 1 > > r, w = lambda{ a }, lambda{ b } > > rwd = RWDelegator.new( r, w ) > > rwd == a #=> true > > a == rwd #=> false > > > > Any hope? > > I get a == rwd #=> true ? As do I: $ cat test.rb class RWDelegator def initialize( read, write ) @read = read @write = write end def inspect "#{@read.call.inspect}*" end def ==( other ) @read.call == other end def method_missing( meth, *args, &blk ) read = @read.call ditto = read.dup result = ditto.send( meth, *args, &blk ) if ditto != read result = @write.call.send( meth, *args, &blk ) end result end end a, b = 1, 1 r, w = lambda{ a }, lambda{ b } rwd = RWDelegator.new( r, w ) puts rwd == a puts a == rwd $ ruby -v test.rb ruby 1.8.4 (2005-12-24) [i386-linux] true true Jacob Fugal