在Ruby中,与许多其他OO编程语言一样,运算符也是可重载的。但是,只有某些字符运算符可能会过载。
此列表可能不完整,但以下是一些无法重载的运算符:
!, not, &&, and, ||, or
答案 0 :(得分:25)
答案 1 :(得分:12)
是的。操作员不会过载。只有方法。
有些运营商并非如此。他们是方法的糖。因此5 + 5
确实是5.+(5)
,而foo[bar] = baz
确实是foo.[]=(bar, baz)
。
答案 2 :(得分:11)
方法是可重载的,这些是语言语法的一部分。
答案 3 :(得分:6)
在Ruby 1.9中,!
运算符实际上也是一种方法,可以被覆盖。这只留下&&
和||
及其低优先级对应and
和or
。
还有一些其他“组合运算符”无法覆盖,例如a != b
实际上是!(a == b)
,a += b
实际上是a = a+b
。
答案 4 :(得分:1)
我们不要忘记<<
例如:
string = "test"
string << "ing"
与调用相同:
string.<<("ing")