如何重寫常見的運營商,如+
,-
,*
,/
,<
,==
,>
等一類?如何在Ruby中覆蓋常規的二元運算符,如+, - ,*,/?
回答
根據它們被重寫的方式,它們不一定是二元的。
class Foo
def +; :plus end
def -; :minus end
def *; :asterisk end
def /; :slash end
def <; :lt end
def ==; :eq end
def >; :gt end
end
Foo.new.+ # => :plus
Foo.new.- # => :minus
Foo.new.* # => :asterisk
Foo.new./ # => :slash
Foo.new.< # => :lt
Foo.new.== # => :eq
Foo.new.> # => :gt
'必然二進制'是什麼意思? – HungryCoder 2013-03-27 06:47:47
通常一個二元運算符需要兩個變量來處理。例如,操作'a + b'是二進制的,因爲它需要'a'和'b'來產生結果。然而,在ruby中,由於操作符也是方法,所以他們不一定需要兩個參數來生成sawa演示的結果。他的經營者沒有任何爭論,但仍然產生了結果。 – 2013-03-27 21:24:06
繼續前面的例子,當你在Ruby中執行'a + b'時,你真的在做'a +(b)'。遵循sawa的例子,如果你要做'a = Foo.new',那麼你可以調用'a。+'並且得到':plus'! – 2013-03-27 21:26:24
- 1. Dart覆蓋一元減運算符
- 2. 有沒有辦法在Ruby中覆蓋<<運算符?
- 3. 在C++中覆蓋=運算符
- 4. 全局覆蓋==運算符
- 5. 覆蓋運算符c#
- 6. Python覆蓋+運算符
- 7. 用qtscript覆蓋運算符
- 8. 覆蓋python中的所有運算符
- 9. 覆蓋NHibernate中的==(相等)運算符?
- 10. 如何覆蓋C++模板子類中的轉換運算符?
- 11. 如何覆蓋模板中的運算符
- 12. 如何在Ruby中覆蓋require?
- 13. 可以被覆蓋/實現的Ruby運算符列表
- 14. 覆蓋python類上的__or__運算符
- 15. 覆蓋的運算符<< in C++
- 16. 如何使用ControlTemplate中的觸發器覆蓋常規樣式?
- 17. 二元運算符應該如何在野牛中定義?
- 18. 如何在嵌套規則中覆蓋修飾符
- 19. 成員二元運算符和運算符重載中的非成員二元運算符
- 20. erb中的Ruby三元運算符?
- 21. 有覆蓋__add__運算符返回元組的問題python/django
- 22. (ruby on rails)如何覆蓋放在lib/
- 23. 跨命名空間覆蓋運算符
- 24. 如何在C++中重寫++運算符,然後使用覆蓋<<運算符打印輸出?
- 25. 如何覆蓋ruby庫的方法?
- 26. 如何覆蓋元素CSS?
- 27. 如何覆蓋scala中元組的值?
- 28. 如何覆蓋數組中的元素?
- 29. 第二次調用常規方法時,對象值被覆蓋
- 30. 二元運算
啊!這些已經是一種方法。 – 2013-03-27 06:23:26
如果我想覆蓋它們以滿足任何特殊需要,該怎麼辦? – OneZero 2013-03-27 06:25:11