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