希望在此調查集體意識,因爲我無法通過搜索找到答案。在Ruby 1.9+中,調用實例上的.methods將產生與該實例的類不同的結果。例如,「foo」.methods將包含'length'和'size',而String.methods則不會。這是什麼原因?我是一位資深的程序員,但是Ruby是新手。根據我的理解,方法應該包括所有的祖先方法,所以它是通過混合或其他模式將長度和大小添加到實例列表中而不是類的?在Ruby中的類和實例上調用.methods
1
A
回答
2
你很困惑.methods()
與.instance_methods()
。
第一個會給你可以在String
對象上調用的方法 - 也就是String
類作爲對象本身。第二個會給你使用String
類或String
實例創建的對象的方法。
2
長度和大小是字符串實例方法,爲什麼它們會被包含在String的(類)方法列表中?類是對象,並有它們自己的方法。
換句話說,你會得到你所調用的對象支持的方法列表。字符串是一個類,所以你得到它的特定類方法,以及它繼承的類方法。
字符串實例是一個實例,因此您可以獲取字符串的實例方法以及它繼承的實例方法。
相關問題
- 1. 如何在實例類中的實例上調用方法?
- 2. Ruby中的類實例變量和實例變量
- 3. 類方法中的Ruby實例引用?
- 4. 上傳實例並在C++中調用基類上的函數
- 5. 在Ruby中的單例類中調用單例方法?
- 6. 從Ruby中的父類實例化子類的實例
- 7. Ruby:在實例和類方法中重用代碼
- 8. 雙重Ruby類的實例
- 9. 類實例ruby的常量
- 10. 在Ruby中移除一個類實例?
- 11. 如何在Ruby中獲取類實例?
- 12. attr_accessor和類實例調試
- 13. Rails和Ruby類,實例變量
- 14. 如何在PHP中「調用」類實例?
- 15. 在Ruby中實例化一個類並填充實例變量
- 16. 在Ruby中的Class中調用實例方法
- 17. Ruby中的類變量實例變量
- 18. C++類實例化和調用方法
- 19. 來自實例方法的Ruby調用類方法
- 20. Ruby:調用另一個類的實例方法
- 21. 從Ruby的類方法調用私有實例方法
- 22. 在調用它的實例類方法
- 23. VB.NET - 如何在泛型類型的實例上調用實例函數委託?
- 24. 乘客在Ajax調用中產生新的ruby實例
- 25. ruby:在不使用實例的情況下調用實例方法
- 26. 實例化T調用方法中的類可調用類
- 27. 實例變量在Ruby中
- 28. 在ruby中使用Class方法調用實例方法
- 29. 提供相同名稱的類和實例方法的Ruby類
- 30. Ruby機架調用:類vs實例方法?
將一個類想象爲一個類的常量類(不知道這在Ruby中是否真的如此,但是這個想法仍然有效)。那麼它應該是有道理的。 – Cubic