为什么 Ruby 只允许某些运算符重载
-
01-07-2019 - |
题
在 Ruby 中,与许多其他 OO 编程语言一样,运算符是可重载的。但是,只有某些字符运算符可以重载。
此列表可能不完整,但以下是一些不能重载的运算符:
!, not, &&, and, ||, or
解决方案
方法是可重载的,它们是语言语法的一部分。
其他提示
是的。运算符不可重载。只有方法。
有些运营商实际上并非如此。它们是方法的糖。所以 5 + 5
是真的 5.+(5)
, , 和 foo[bar] = baz
是真的 foo.[]=(bar, baz)
.
在 Ruby 1.9 中, !
运算符实际上也是一个方法并且可以被重写。这只剩下 &&
和 ||
及其低优先级对应项 and
和 or
.
还有一些其他无法覆盖的“组合运算符”,例如 a != b
实际上是 !(a == b)
和 a += b
实际上是 a = a+b
.
我们不要忘记 <<
例如:
string = "test"
string << "ing"
与调用相同:
string.<<("ing")
不隶属于 StackOverflow