我有一个o
class的实例O
。我想知道有什么o
能力。
o.methods
会给我很多方法。所以我通常会这样做o.methods - Object.instance_methods
。但这并不简洁。
我想做类似的事情o.methods - o.class.superclass.instance_methods
。也就是说,只是O
自身定义的方法。
还有其他方法吗?
我有一个o
class的实例O
。我想知道有什么o
能力。
o.methods
会给我很多方法。所以我通常会这样做o.methods - Object.instance_methods
。但这并不简洁。
我想做类似的事情o.methods - o.class.superclass.instance_methods
。也就是说,只是O
自身定义的方法。
还有其他方法吗?
您可以使用以下方法Module#instance_methods
:
o.class.instance_methods(false)
警告文档似乎是错误的,它说:
如果没有参数,或者参数为 false,则返回 mod 中的实例方法,否则返回 mod 和 mod 的超类中的方法。
但实际上默认的参数是true
:
String.instance_methods.size
# => 184
String.instance_methods(false).size
# => 130