回答
的Class
類定義了一個new
實例方法。因此,上的new
類方法僅僅是一種保留 - 它沒有做任何事情 - 把它看作是動物從遠古祖先繼承的退化器官之一 - 就像人類的闌尾一樣。
注意的諸如Numeric
Fixnum
和Float
及其親屬顯式取消定義的new
方法的子類。我想他們只是沒有打擾到它對於Numeric
的定義,因爲這個類的直接實例從來沒有真正存在過,並且它沒有傷害它。
是的,這就是我發現的原因。在irb中玩,嘗試Float.new('NaN'),失敗(NoMethodError)。去Numeric.new(「NaN」),最後是一個無用的(?)數字。 – steenslag 2010-10-05 06:48:39
Ruby中的所有東西都是對象,甚至是類。所以沒有Numeric
的構造函數意味着根本沒有Numeric
類!
看看the docs。它只是一個基類。你永遠不會(好吧,它不太可能,無論如何:))直接使用它。
這是錯誤的。許多Ruby類沒有'new'方法,請參閱:TrueClass,FalseClass,NilClass,Fixnum,Float等 – horseyguy 2010-10-05 04:13:13
Eh,一個小細節。如果需要,一個類可以取消定義它的'new'方法。數字不是因爲你的意思是能夠繼承它並將其作爲一個基礎。 「TrueClass」等並不意味着要這樣使用。 – rfunduk 2010-10-05 11:44:07
'小細節'使你的這個粗體聲明完全無效:「所以沒有Numeric的構造函數意味着根本沒有Numeric類!」 – horseyguy 2010-10-05 19:21:43
您將永遠不會以這種方式使用數字類。它是Ruby中所有數字類型的基類。
Ruby的數值類構成一個完整的 數字塔,提供多種數字 表示和 數值表示。
但你沒有解釋爲什麼'new'仍然存在:) – horseyguy 2010-10-05 04:37:37
- 1. 爲什麼Ruby沒有內置的ThreadPool?
- 2. Ruby有很多小數點,爲什麼?
- 3. 爲什麼有不同的Ruby實現?
- 4. 爲什麼Mac OS X帶有ruby/rails?
- 5. 有什麼樣Ruby的模塊爲JavaScript
- 6. 爲什麼Ruby沒有is_an?方法?
- 7. 爲什麼Ruby的stdlib有DateTime類?
- 8. 爲什麼Ruby中沒有`elsunless`語句?
- 9. Ruby爲什麼沒有!==運算符?
- 10. Ruby和Ruby on Rails有什麼區別?
- 11. 爲什麼Bundler是vendoring ruby?
- 12. 爲什麼在使用Ruby
- 13. libopenssl-ruby有什麼作用?
- 14. 爲什麼Ruby包含?評估爲零?
- 15. /ell/==='Hello'在Ruby中爲true。爲什麼?
- 16. 爲什麼Ruby有這麼多的冗餘?
- 17. 爲什麼ruby常量是可變的?變量有什麼區別?
- 18. Ruby中_有什麼特別的含義,你爲什麼使用它
- 19. 爲什麼Ruby 1.9.2刪除「。」來自LOAD_PATH,還有什麼替代方案?
- 20. 爲什麼Ruby中的a = a`` nil`?
- 21. 爲什麼Ruby使用'=>'符號?
- 22. Ruby:爲什麼put調用to_ary?
- 23. 爲什麼Ruby on Rails缺乏文檔?
- 24. 爲什麼Ruby for循環失敗?
- 25. 爲什麼Ruby 1.9允許覆蓋! !=!〜?
- 26. 爲什麼Ruby不能找到Rake?
- 27. 爲什麼:在Ruby中key.hash!='key'.hash?
- 28. Ruby Enumerator - 爲什麼以異常結束?
- 29. 爲什麼這不適用於Ruby 1.9.2?
- 30. ruby中的'where'行爲是什麼?
你的意思是'Numeric.new'不是'Numeric#new' ....''''表示'實例方法'(但在這種情況下'new'是一個類方法) – horseyguy 2010-10-05 04:48:00
不知道。標題已更正。謝謝。 – steenslag 2010-10-05 06:35:02