是否有可以覆蓋的所有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. Ruby中的覆蓋==運算符
- 2. 列表被覆蓋?
- 3. 以前的值被覆蓋的列表
- 4. 覆蓋運算符c#
- 5. 全局覆蓋==運算符
- 6. 用qtscript覆蓋運算符
- 7. OpenCL cl_float4運算符覆蓋
- 8. 如何覆蓋==運算符
- 9. Python覆蓋+運算符
- 10. 有什麼優勢可以覆蓋ORM中的==運算符?
- 11. 身寬可以被覆蓋?
- 12. 是否可以覆蓋rebol路徑運算符?
- 13. 如何在Ruby中覆蓋常規的二元運算符,如+, - ,*,/?
- 14. 如何覆蓋[]運算符,如列表[1:10]?
- 15. 覆蓋的運算符<< in C++
- 16. 覆蓋sqlalchemy中的__eq__運算符
- 17. 覆蓋python中的所有運算符
- 18. 覆蓋python類上的__or__運算符
- 19. 覆蓋NHibernate中的==(相等)運算符?
- 20. 有沒有辦法在Ruby中覆蓋<<運算符?
- 21. 列表 - 列表元素被覆蓋
- 22. 覆蓋ruby中的散列
- 23. 陣列被覆蓋
- 24. 跨命名空間覆蓋運算符
- 25. 在C++中覆蓋=運算符
- 26. Dart覆蓋一元減運算符
- 27. 覆蓋Rprofile.site中的*運算符以處理整數溢出
- 28. 被覆蓋的鏈接列表數據
- 29. 被覆蓋的鏈接列表輸入
- 30. 可以覆蓋是否被棄用?
**重載**是對不同動作使用相同的方法名稱,其中方法只能通過其簽名來區分。其實這在Ruby中是不可能的。重寫或重新定義在這裏是適當的術語。 – 2013-09-30 20:01:14
感謝您的詳細信息,@platzhirsch。我編輯了這個問題。奇怪的是,它通常被稱爲運算符重載然後,不是? – aaaidan 2013-10-07 23:29:52
好吧,和我一樣,對於術語的使用和它們的含義總是可以挑剔的:-)畢竟它是從像C++這樣的語言中派生出來的,它可能是相同的,但是基於不同的語義。 – 2013-10-08 00:47:01