2012-11-12 5 views
3

Rails 3.0을 배우기 시작했으며 언젠가 Pure Ruby 1.9를 배우기로 결정했습니다. 항상 사용할 수 있기 때문에 객체 클래스를 볼 수있는 방법이 있는지 궁금합니다. 마찬가지로 IRB에 입력 할 수있는 명령은 to_a, to_s 등과 같은 객체 클래스의 모든 메소드를 표시합니다. 어떤 도움을 주셔서 감사합니다.Object 클래스의 모든 메소드/속성을 보려면 어떻게해야합니까?

답변

9

#methods은 원하는 방법입니다. 객체가 응답하는 메소드의 모든 이름 인 ar 배열을 반환합니다.

Object.new.methods 

또는 IRB에서 더 읽기 :

puts Object.new.methods.sort.to_yaml 

또는 클래스 메소드 :

Object.methods 

하나 개주의해야하지만, 일부 개체는 허용되지 않습니다 방법 여기에 나열되어 있습니다. #method_missing에 후크로 구현 된 것은 표시되지 않습니다. 여기에는 다른 레일 객체뿐만 아니라 많은 ActiveRecord 메소드가 포함됩니다.

그러나 까다로운 일이 일어나지 않는 한, 이것은 당신이 원하는 것처럼 보이는 목록입니다.

+0

Niggle :''methods''는 문자열이 아닌 기호의 배열을 반환합니다. – cantlin

+0

루비 1.8.7에서는 문자열을 얻습니다. 슬프게도 내가 가장 익숙한 것입니다. –

+0

음침한 고맙습니다. 아무도 내 질문을 이해할 수 없다고 생각했습니다. –

3

개체의 메서드를 보려면 your_object.methods을 사용할 수 있습니다. 클래스의 경우 클래스 메서드가됩니다. 클래스의 인스턴스 메소드를 보려면 your_class.instance_methods을 사용할 수 있습니다. Object의 모든 클래스 메서드를 나열하려면 Object.methods을 사용하고 Object의 모든 인스턴스 메서드를 보려면 Object.instance_methods을 사용합니다.

추가 팁 : 주어진 클래스가 구현하는 메소드 (조상으로부터 상속 된 메소드가 아님) 만보고 싶다면 앞서 언급 한 방법 중 하나에 인수로 false을 전달할 수 있습니다. 따라서 예를 들어 String.instance_methods(false)은 String이 구현하는 인스턴스 메서드 목록을 반환하지만 dupis_a?과 같은 일반 Object 메서드는 반환하지 않습니다.

그러나 배우고 자한다면 클래스 또는 클래스 확장 (예 : Rails의 문자열 또는 날짜 추가) 문서를 보는 것이 더 나을 것입니다.

관련 문제