From: christophe mckeon Date: 2006-06-21T05:38:26+09:00 Subject: binary operators, coerce, and non numeric types okay, i understand how to define a coerce method, but i don't think it can do what i want, in fact i think the only way to do what i want is rather ugly unless i drill down and actually patch the interpreter. class X def + other BinOp.new(self,other,:+) end end class BinOp def initialize x,y,op @x,@y,@op=x,y,op end end x = X.new x + x # -> BinOp, the behaviour i want x + 3 # -> BinOp, the behaviour i want 3 + 3 # -> 6, the behaviour i want 3 + x # is of courses an error, but i want it to return a BinOp the only way i can find that ruby will support this, is by writing class Fixnum alias old_add + def + other if other.kind_of? X BinOp.new self, other, :+ else self.old_add other end end end which is pretty ugly considering i have many operators to support, as well as several numeric types. of course i could automate it with some metaprogramming, but i'd like to know if anyone has any better ideas? -- Posted via http://www.ruby-forum.com/.