From: matz@... (Yukihiro Matsumoto) Date: 2002-05-10T17:37:11+09:00 Subject: Re: Reversing receiver and argument for commutative math operations In message "Reversing receiver and argument for commutative math operations" on 02/05/10, "Gray, Jeff" writes: |Let's say I have a class that overrides certain arithmetic operators like + |and *, so that | | obj = MyClass.new(5, "some other attribute") | this_obj = obj * 2 # this_obj == MyClass.new(10) | that_obj = 2 * obj # that_obj == this_obj is desired |Is there a way to do what I'd like? How about class MyClass def initialize(v) @value = v end def value @value end def *(x) if x.type <= self.type x = x.value end self.type.new(self.value * x) end def coerce(x) [self.type.new(x), self] end end p MyClass.new(1) * 2 p 2 * MyClass.new(2) matz.