我已经开始学习Rails 3.0,并决定花一些时间学习Pure Ruby 1.9,并想知道是否有办法查看对象类,因为它始终可用。就像有一个你可以在IRB中键入的命令,例如,它将显示Object类中的所有方法,如to_a,to_s等。感谢您的帮助
答案 0 :(得分:9)
#methods
是您想要的方法。它只返回ar数组的字符串,它们是对象响应的方法的所有名称。
Object.new.methods
或者irb中的可读性更高:
puts Object.new.methods.sort.to_yaml
或者类方法:
Object.methods
但有一点需要注意,有些对象允许使用此处未列出的方法。使用#method_missing
的钩子实现的任何内容都不会显示。这包括许多ActiveRecord
方法以及其他rails对象。
但只要没有什么棘手的事情发生,这就是你想要的清单。
答案 1 :(得分:3)
要查看对象的方法,可以执行your_object.methods
。对于一个类,这将是它的类方法。要查看类的实例方法,可以执行your_class.instance_methods
。因此,要列出Object的所有类方法,您需要Object.methods
,并且要查看Object的所有实例方法,您需要Object.instance_methods
。
进一步提示:如果您只想查看给定类实现的方法(不是从其祖先继承的方法),您可以将false
作为参数传递给我之前提到的任何一种方法。因此,例如,String.instance_methods(false)
将返回String实现的实例方法列表,但不会返回dup
和is_a?
等常规Object方法。
但是,如果您正在尝试学习,查看给定类或类扩展的文档(例如Rails添加到String或Date)可能会更好。