是否有可以覆盖的所有Ruby运算符的列表? (不是那些不能!)可以被覆盖/实现的Ruby运算符列表
24
A
回答
31
这是a table of the Ruby operators。
是方法和那些重载的是:
[ ] [ ]= Element reference, element set
** Exponentiation
! ~ + - Not, complement, unary plus and minus (method names for the last two are [email protected] and [email protected])
*/% Multiply, divide, and modulo
+ - Plus and minus
>> << Right and left shift
& Bitwise `and'
^ | Bitwise exclusive `or' and regular `or'
<= < > >= Comparison operators
<=> == === != =~ !~ Equality and pattern match operators (!= and !~ may not be defined as methods)
该表是从2001年镐书,但是这是同一个表在Ruby 1.9镐书 - 没有理由相信这一套的中缀操作员将会改变。
+0
通过“那些方法和可重载的,”我假设你的意思是只能重载方法的操作符,不是?另外,尽管“纯”操作符不能被重载,但可以滥用更多类似字的关键字(例如'defined?','not','或''begin')作为新方法的名称而没有任何infixy的优点。 – fny 2012-06-03 04:14:17
+1
实际上,!=和!〜可以被重载/定义,即使旧镐说你不能。早在2008年,在邮件列表上就有人投诉,Matz评论说Ruby是灵活的。 – 2012-12-29 06:17:51
相关问题
- 1. 以前的值被覆盖的列表
- 2. 全局覆盖==运算符
- 3. 覆盖运算符c#
- 4. Python覆盖+运算符
- 5. 用qtscript覆盖运算符
- 6. 有什么优势可以覆盖ORM中的==运算符?
- 7. 身宽可以被覆盖?
- 8. 是否可以覆盖rebol路径运算符?
- 9. 如何在Ruby中覆盖常规的二元运算符,如+, - ,*,/?
- 10. 覆盖python中的所有运算符
- 11. 覆盖python类上的__or__运算符
- 12. 覆盖的运算符<< in C++
- 13. 覆盖NHibernate中的==(相等)运算符?
- 14. 有没有办法在Ruby中覆盖<<运算符?
- 15. 覆盖ruby中的散列
- 16. 阵列被覆盖
- 17. 在C++中覆盖=运算符
- 18. 跨命名空间覆盖运算符
- 19. Dart覆盖一元减运算符
- 20. 被覆盖的链接列表输入
- 21. 缓冲区被覆盖,可以读取
- 22. 可以覆盖是否被弃用?
- 23. Python类 - 实例被覆盖?
- 24. 什么(如果有)语言可以覆盖基本类型的+运算符?
- 25. 如何发现Ruby/Rails中被覆盖的方法?
- 26. Ruby on Rails覆盖率工具,显示什么不被覆盖
- 27. 实现'<'运算符
- 28. 实现|| =和&& =操作符:运算符实现没有匹配运算符声明
- 29. Symfony2 - 阵列被覆盖
- 30. Java3D实现区域覆盖
**重载**是对不同动作使用相同的方法名称,其中方法只能通过其签名来区分。其实这在Ruby中是不可能的。重写或重新定义在这里是适当的术语。 – 2013-09-30 20:01:14
感谢您的详细信息,@platzhirsch。我编辑了这个问题。奇怪的是,它通常被称为运算符重载然后,不是? – aaaidan 2013-10-07 23:29:52
好吧,和我一样,对于术语的使用和它们的含义总是可以挑剔的:-)毕竟它是从像C++这样的语言中派生出来的,它可能是相同的,但是基于不同的语义。 – 2013-10-08 00:47:01