我想知道是否有一個Ruby方法調用,它只顯示由它調用的Ruby對象定義的方法,而不是它的祖先類定義的所有方法,這是methods
似乎要做的。如何檢查Ruby對象的方法?
17
A
回答
30
methods
接受一個可選的布爾參數,它指定是否也列出來自對象的類及其超類的方法或僅列出對象的單例方法。所以你可以做obj.methods(false)
只得到在obj
上定義的單例方法。
如果你想要的對象的類定義的方法,但不是由它的超類定義的方法,你可以通過調用對象的類instance_methods(false)
得到它,所以它的obj.class.instance_methods(false)
。
1
你有幾個選擇 - object.methods
,object.public_methods
,object.singleton_methods
...這取決於你想要什麼。因爲他們都返回一個數組,你可能想嘗試這樣的:
# obj is the current object
parent = obj.class.superclass
methods = (obj.methods - parent.methods)
4
我偏愛obj.methods.sort
但一些其他的答案是在某些情況下更好,因爲他們描述
您還可以使用obj.methods.sort.grep /foo/
查找與正則表達式匹配的方法名稱。 當您瞭解您要查找的內容時,這很有用。
相關問題
- 1. 如何檢查對象在Ruby中
- 2. ruby檢查對象是否在數組中的方法
- 3. 如何在Python中檢查對象所具有的方法?
- 4. 如何檢查模擬對象上特定參數的方法?
- 5. 如何使輔助方法檢查對象的存在狀態?
- 6. Python:如何檢查對象的屬性是否是方法?
- 7. Spock - 如何檢查間諜對象的方法調用計數?
- 8. 如何檢查對象是否支持vba中的方法?
- 9. 如何在Javascript中檢查該對象可用的對象和方法
- 10. 如何檢查對象是對象
- 11. Ruby Savon SOAP檢查請求對象
- 12. RSpec。如何檢查對象方法是否被調用?
- 13. 如何在Symfony2中檢查對象是否有方法
- 14. 如何通過「發件人」對象檢查「方法組」?
- 15. 如果方法的參數是符號,如何檢查Ruby?
- 16. 如何檢查對象類
- 17. 如何檢查Javascript對象
- 18. Ruby的ActiveRecord的對象DUP方法
- 19. 在Rails/Ruby中檢查對象是否存在的正確方法是什麼?
- 20. 對象檢測方法
- 21. 如何在Ruby中的塊中提供類/對象方法?
- 22. 如何列出Ruby中所有對象的方法?
- 23. Java方法如何檢索與特定方法有關的方法對象? (Java)
- 24. 檢查委託是否是對象的方法,並檢索此對象引用和方法名稱
- 25. Ruby對象/方法/ attr_accessor使用
- 26. 在Ruby中,如何檢查方法「foo =()」是否已定義?
- 27. 如何檢查私有方法是否在ruby中定義
- 28. 如何檢查一個值的對象
- 29. 如何檢查psql中的對象?
- 30. 如何檢查T對象的類型?
你的意思是`parent = obj.class.superclass`,對吧? – sepp2k 2011-01-12 01:43:13