轉自: http://blog.sina.com.cn/s/blog_4901d7bd0100b6lf.htmlRuby的操作符重載
轉載▼Ruby 的操作符重載非常有意思,Ruby允許“+”等操作符來做函數名字,因此使用的時候和正常調用函數無兩樣,唯一的區別不一定要使用"."來界定,直接使用+就可以了。但是這必須有個前提,就是+定義的後面只有一個參數,如果有兩個參數就一定要使用“.", 而且Ruby不像C++,需要區分是雙目還是單目操作符,統一遵循,一個上述一個原則:統一操作符函數,重新定義的時候只帶一個參數的時候不需要使用".",2個或者以上,除了要明確使用"."外,函數的實參還必須用()包圍起來。以下是範例:class Clsaattr_accessor :mdef funclsa (x=0)puts "Clsa"endendclass Clsb< Clsadef funclsa puts "Clsb"enddef + (x, y)if x.class!=Clsareturn "Wrong Type"elseui=x.m+mendendendc=Clsb.new()c.m=3cc=Clsa.new()cc.m=4puts c.+(cc, c)c.funclsa>ruby test.rb7Clsb>Exit code: 0=====================================================================================class Clsaattr_accessor :mdef funclsa (x=0)puts "Clsa"endendclass Clsb< Clsadef funclsa puts "Clsb"enddef + xif x.class!=Clsareturn "Wrong Type"elseui=x.m+mendendendc=Clsb.new()c.m=3cc=Clsa.new()cc.m=4puts c+ccc.funclsa>ruby test.rb7Clsb>Exit code: 0