3

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

4

2 回答 2

10

#methods是你想要的方法。它只是返回一个符号数组,这些符号是对象响应的所有方法的名称。

Object.new.methods

或者在 irb 中更具可读性:

puts Object.new.methods.sort.to_yaml

或者对于类方法:

Object.methods

不过需要注意的是,某些对象允许此处未列出的方法。任何用钩子实现的东西#method_missing都不会出现。这包括很多ActiveRecord方法以及其他 rails 对象。

但只要没有什么棘手的事情发生,这就是你想要的列表。

于 2012-11-12T19:59:12.020 回答
3

要查看对象的方法,您可以执行your_object.methods. 对于一个类,这将是它的类方法。要查看类的实例方法,您可以执行your_class.instance_methods. 所以要列出 Object 的所有类方法,你会这样做Object.methods,而要查看 Object 的所有实例方法,你会这样做Object.instance_methods

进一步提示:如果您只想查看给定类实现的方法(而不是从其祖先继承的方法),您可以将false其作为参数传递给我之前提到的任一方法。因此,例如,String.instance_methods(false)将返回 String 实现的实例方法列表,但不会返回像dupand这样的通用 Object 方法is_a?

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

于 2012-11-12T20:05:35.460 回答