2011-01-12 2 views

답변

30

methods은 선택적으로 부울 매개 변수를 취합니다.이 매개 변수는 개체의 클래스와 해당 수퍼 클래스 또는 개체의 단독 메서드에서 메서드를 나열할지 여부를 지정합니다. 따라서 obj.methods(false)을 수행하여 obj에 정의 된 싱글 톤 메서드 만 가져올 수 있습니다.

수퍼 클래스가 정의한 메소드가 아니라 객체 클래스가 정의한 메소드를 원할 경우 객체 클래스에 instance_methods(false)을 호출하여 가져올 수 있으므로 obj.class.instance_methods(false)입니다.

1

몇 가지 옵션이 있습니다. object.methods, object.public_methods, object.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/을 입력하여 regexp와 일치하는 메소드 이름을 찾으십시오. 원하는 정보가있을 때 유용합니다.