如何查看Object Class中的所有方法/属性

时间:2012-11-12 19:56:52

标签: ruby ruby-1.9 irb

我已经开始学习Rails 3.0,并决定花一些时间学习Pure Ruby 1.9,并想知道是否有办法查看对象类,因为它始终可用。就像有一个你可以在IRB中键入的命令,例如,它将显示Object类中的所有方法,如to_a,to_s等。感谢您的帮助

2 个答案:

答案 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实现的实例方法列表,但不会返回dupis_a?等常规Object方法。

但是,如果您正在尝试学习,查看给定类或类扩展的文档(例如Rails添加到String或Date)可能会更好。