2011-01-12 19 views

答えて

30

methodsは、オブジェクトのクラスとそのスーパークラス、またはオブジェクトのシングルトンメソッドからメソッドをリストするかどうかを指定するオプションのブール型パラメータをとります。したがって、obj.methods(false)を実行して、objに定義されたシングルトンメソッドのみを取得することができます。

オブジェクトのクラスで定義されているメソッドでスーパークラスで定義されているメソッドではない場合は、オブジェクトのクラスでinstance_methods(false)を呼び出して取得できます。したがって、obj.class.instance_methods(false)です。

1

あなたはいくつかの選択肢があります - object.methodsobject.public_methodsobject.singleton_methods ...あなたが望むものによって異なります。

# obj is the current object 
parent = obj.class.superclass 

methods = (obj.methods - parent.methods) 
+1

あなたは 'parent = obj.class.superclass'を意味します、そうですか? – sepp2k

+1

'whatever.methods'は実行中のRubyのバージョンで' Array'を返します。 'whatever.public_methods'と同じです。 – cHao

+0

@ sepp2k - はい、ありがとう - 固定! – sethvargo

4

を私はobj.methods.sortに部分的だが、彼らはあなたが使用することもでき

を説明するように、他の回答の一部が一定の場合に優れている:彼らは両方の配列を返すので、あなたのような何かをしようとする場合がありますobj.methods.sort.grep /foo/を使用して、正規表現に一致するメソッド名を検索します。 これは、あなたが探しているものを知っているときに役立ちます。

関連する問題