Ruby 提供了基本的运算符集(如+, -, *, / 等等) ,也提供了及格独特的运算符.
实际上,Ruby 中的许多运算符是由方法调用来实现的, 例如, 当你执行 a*b+c时,实际上你是请求 a 对象执行方法 * ,传入参数是 b ,然后请求返回的结果对象执行 + 方法 , 传入的参数是 c ,这等价于:
(a.*(b)).+(c)
因为任何东西都是对象, 而且你可以重新定义实例方法, 所以你可以重新定义任何不满足你需求的基本算术方法.
class Fixnum alias old_plus + def + (other) old_plus(other).succ end end
1 + 2 -> 4
a = 3 ->
a += 4 -> 8
a + a + a ->26
更有用的是, 你写的类可以像内建对象那样参与到运算符表达式中. 比如, 你可能想从歌曲中间剪辑一段, 这可以用搜索操作来实现.