我想知道是否有一个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