在Ruby中,与许多其他OO编程语言一样,运算符是可重载的.但是,只有某些字符运算符可能会过载.
此列表可能不完整,但是,以下是一些无法重载的运算符:
!, not, &&, and, ||, or
Joe Van Dyk.. 25
"&&和||运算符不可重载,主要是因为它们提供的"短路"评估无法通过纯方法调用再现."
- Jim Weirich
"&&和||运算符不可重载,主要是因为它们提供的"短路"评估无法通过纯方法调用再现."
- Jim Weirich
是的.操作员不会过载.只有方法.
有些运营商并非如此.他们是方法的糖.所以5 + 5
真的5.+(5)
,而且foo[bar] = baz
确实如此foo.[]=(bar, baz)
.
方法是可重载的,这些是语言语法的一部分.
在Ruby 1.9中,!
运算符实际上也是一种方法,可以被覆盖.这只留下&&
和||
他们的低优先级对应物and
和or
.
还有一些其他"组合运算符"无法覆盖,例如a != b
实际上!(a == b)
并且a += b
实际上是a = a+b
.