为什么 Ruby 只允许某些运算符重载

发布于 2024-07-05 18:02:38 字数 154 浏览 7 评论 0原文

在 Ruby 中,与许多其他 OO 编程语言一样,运算符是可重载的。 但是,只有某些字符运算符可以重载。

此列表可能不完整,但以下是一些不能重载的运算符:

!, not, &&, and, ||, or

In Ruby, like in many other OO programming languages, operators are overloadable. However, only certain character operators can be overloaded.

This list may be incomplete but, here are some of the operators that cannot be overloaded:

!, not, &&, and, ||, or

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

半仙 2024-07-12 18:02:38

方法是可重载的,它们是语言语法的一部分。

Methods are overloadable, those are part of the language syntax.

星星的轨迹 2024-07-12 18:02:38

是的。 运算符不可重载。 只有方法。

有些运营商实际上并非如此。 它们是方法的糖。 所以 5 + 5 实际上是 5.+(5),而 foo[bar] = baz 实际上是 foo.[] =(酒吧,巴兹)

Yep. Operators are not overloadable. Only methods.

Some operators are not really. They're sugar for methods. So 5 + 5 is really 5.+(5), and foo[bar] = baz is really foo.[]=(bar, baz).

_蜘蛛 2024-07-12 18:02:38

在 Ruby 1.9 中,! 运算符实际上也是一个方法并且可以被重写。 这只留下 &&|| 及其低优先级对应项 andor

还有一些其他无法覆盖的“组合运算符”,例如 a != b 实际上是 !(a == b)a += b< /code> 实际上是 a = a+b

In Ruby 1.9, the ! operator is actually also a method and can be overriden. This only leaves && and || and their low-precedence counterparts and and or.

There's also some other "combined operators" that cannot be overriden, e.g. a != b is actually !(a == b) and a += b is actually a = a+b.

岁月流歌 2024-07-12 18:02:38

我们不要忘记 << 例如:

string = "test"
string << "ing"

与调用相同:

string.<<("ing")

And let's not forget about << for example:

string = "test"
string << "ing"

is the same as calling:

string.<<("ing")
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文