11

oclassのインスタンスがありますOo何ができるのか知りたいです。

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 に答える