当前位置:  开发笔记 > 后端 > 正文

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

如何解决《为什么Ruby只允许某些运算符重载》经验,为你挑选了4个好方法。

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

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

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

Joe Van Dyk.. 25

"&&和||运算符不可重载,主要是因为它们提供的"短路"评估无法通过纯方法调用再现."

- Jim Weirich



1> Joe Van Dyk..:

"&&和||运算符不可重载,主要是因为它们提供的"短路"评估无法通过纯方法调用再现."

- Jim Weirich


实际上,这不是问题.而不是将`a && b`翻译成`a.&&(b)`,你可以把它翻译成`a.&& {b}`.Blocks*do*提供惰性评估.

2> Jordi Bunste..:

是的.操作员不会过载.只有方法.

有些运营商并非如此.他们是方法的糖.所以5 + 5真的5.+(5),而且foo[bar] = baz确实如此foo.[]=(bar, baz).



3> Farrel..:

方法是可重载的,这些是语言语法的一部分.



4> Jörg W Mitta..:

在Ruby 1.9中,!运算符实际上也是一种方法,可以被覆盖.这只留下&&||他们的低优先级对应物andor.

还有一些其他"组合运算符"无法覆盖,例如a != b实际上!(a == b)并且a += b实际上是a = a+b.

推荐阅读
李桂平2402851397
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有