我一直在研究一個類項目的Ruby on Rails。我一直聽到「Ruby中的一切都是一個對象」。我不確定我理解的是爲什麼這是一件好事,或者如果這是件好事?「一切都是對象」是好事嗎?
回答
一個反例是,在Java中Integer
是一個對象,但int
不是,這意味着不同的操作同時適用於(當然在最新的Java有自動轉換到/從對象的版本,但是這會帶來意想不到的性能問題)。由於間接性,對象稍慢一些,但更靈活;一切都是一個對象意味着一切都表現一貫。 Java也會是一個例子:一個數組不是一個對象,並且在事實之後(甚至是多個第三方實現)被閂上,因此與集合類迭代器的工作方式不一致。
另一個反例:在JS'null'和'undefined'不是對象,所以當你期待數組中,如果'param'可能爲'null',則不能僅僅說'if(param.length)'。在Ruby中,你可以修改'nil'來使用自定義方法(比如Rails中的'blank?',所有對象都會響應)。 – Phrogz 2012-04-12 22:44:58
在Java中,數組*是*對象 - 它們對它們沒有太多有用的東西,因此所有其他的東西(可以說)應該在數組上。 – delnan 2012-04-12 22:49:22
顯然,[Oracle的計劃](http://www.javaworld.com/javaworld/jw-03-2012/120315-oracle-s-java-roadmap.html)從Java語言中徹底刪除原語。 – 2012-04-13 00:52:46
它使Ruby非常靈活。數字和其他原始類型可以被修改或擴展。
這也可能會導致相當優雅的語法:在Ruby中
5.times { print "print this 5 times" }
一切是不是一個對象(是的,我知道他說這句話的時候,但它仍然沒有完全真正的什麼人通常是指) 。說「Ruby中的所有東西都評估爲一個對象」比較合適。這是一個有趣的見解,爲了更恰當的闡述,我會簡單地引用大衛布萊克。這是一個良好的閱讀:
像其他人已指出,有不是像的Java在其他語言中對象的其他原語。對於編譯器和計算機來說,獲得最高效的代碼是一件好事,但程序員需要根據他們處理的是哪一種函數和方法來使用不同的函數和方法。
由於紅寶石是專爲人類而不是計算機,爲了人類的生產力犧牲一點計算資源被認爲是好的。因此,Ruby從來沒有區分對象和基元。它肯定會降低新手的學習曲線。在內部,Ruby使用的是一種叫做標記指針的技術,就我所知,缺乏原語的性能損失並不是那麼糟糕。
另一件值得注意的事情是,在Ruby中,類也是對象,這意味着即使在代碼運行時,也可以輕鬆修改類及其行爲。這種動態的特性賦予了程序員如此強大的功能,Ruby代碼看起來非常簡潔。 Ruby on Rails充分利用了Ruby語言的這一動態特性。
- 1. 一切都是Ruby中的對象嗎?
- 2. 一切都是一個對象?
- 3. 每個文件的php對象都是好主意嗎?
- 4. typeof new String(「aaa」)===「object」?一切都是一個對象,但是有原始類型?
- 5. 類聲明是紅寶石的洗眼液嗎?一切是否都是面向對象的?
- 6. 太依賴API是一件好事嗎?
- 7. 這是一個對象嗎?
- 8. 是int []一個對象嗎?
- 9. 事件是GOTO的面向對象嗎?
- 10. 一切都設置好了,但是riak啓動失敗
- 11. 所有東西都是最新的(一切都不是)
- 12. 設置視口每一幀都是一個好主意嗎?
- 13. 如果一切看起來都很「好」,std :: mutex :: lock會引發事件嗎?
- 14. 重新使用ADO.NET命令對象是一個好主意嗎?
- 15. 這是一個很好的面向對象設計嗎?
- 16. 直接JSON.stringify Javascript對象是一種很好的做法嗎?
- 17. 給自己分配一個對象是個好主意嗎?
- 18. AS3添加和刪除對象,這是一個好主意嗎?
- 19. Git push將不會做任何事(一切都是最新的)
- 20. 如何處理Rails的資源使用情況?破解一切是好事嗎?
- 21. 一切都是計劃中的列表嗎?
- 22. 對所有事物都有特殊的例外情況是否是一種好習慣?或者是更好地重用一點更抽象的異常?
- 23. 可以這樣做嗎?這是不是很好(在同一個對象中有一個對象)?
- 24. 絕對是測試一切還是浪費時間(Rails)是一個好習慣嗎?
- 25. 記事本++基本的編程一切都很好
- 26. 讓子對象有一個對其父對象的引用而不是指針是不好的做法嗎?
- 27. Heroku一切都是最新的
- 28. git push說一切都是最新的
- 29. git說一切都是最新的
- 30. 爲什麼一切都不是黃金?
簡短回答:一致性和靈活性(讀作「鋒利的刀」)。 – Phrogz 2012-04-12 22:41:17
什麼意思?我認爲這個答案會因個人意見而有所不同。 – j4y 2012-04-12 22:45:01
相關問題:http://stackoverflow.com/questions/24270/whats-the-point-of-oop – 2012-04-12 23:21:18