11

我有一个oclass的实例O。我想知道有什么o能力。

o.methods会给我很多方法。所以我通常会这样做o.methods - Object.instance_methods。但这并不简洁。

我想做类似的事情o.methods - o.class.superclass.instance_methods。也就是说,只是O自身定义的方法。

还有其他方法吗?

4

1 回答 1

16

您可以使用以下方法Module#instance_methods

o.class.instance_methods(false)


警告文档似乎是错误的,它说:

如果没有参数,或者参数为 false,则返回 mod 中的实例方法,否则返回 mod 和 mod 的超类中的方法。

但实际上默认的参数是true

String.instance_methods.size
# => 184
String.instance_methods(false).size
# => 130
于 2013-07-25T13:21:14.567 回答