From: Adam Shelly Date: 2008-04-01T03:37:57+09:00 Subject: Re: Modifying FIX::* method On 3/31/08, Adam Shelly wrote: > On 3/31/08, Alex DeCaria wrote: > > I want to be able to multiply a NUMERIC object by my Foo object and have > > it return a new Foo object with all the instance variables multiplied by > > the Numeric object. > [...] > > I'm thinking I have to modify the "*" method for all the subclasses of > > the NUMERIC class. Is this correct? Or am I missing something. > > > You don't need to modify Numeric, you just need to tell it how to > coerce your object into a number. > Oops, I didn't read your message closely enough. Maybe Jason is right, and you shouldn't even consider doing this, but something like the following should work: class Foo attr_reader :x,:y def initialize(x,y) @x=x @y=y end def coerce(n) [Foo.new(n,n),self] end def +(other) Foo.new(@x+other.x,@y+other.y) end def /(other) Foo.new(@x/other.x,@y/other.y) end end p (2 + Foo.new(3,0)) #=> # p f=Foo.new(4,10) #=> # p 100/f #=> #