2012-11-12 7 views
3

Я начал изучать Rails 3.0 и решил потратить некоторое время на изучение Pure Ruby 1.9 и интересно, есть ли способ просмотреть класс объектов, поскольку он всегда доступен. Например, есть команда, которую вы можете ввести в IRB, например, которая отобразит все методы в классе объектов, такие как to_a, to_s и т. Д. Спасибо за любую помощь.Как я могу увидеть все методы/свойства класса объектов

ответ

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

yea thanx очень полезно, Думал, что никто не поймет мой вопрос, спасибо –

3

Чтобы посмотреть методы объекта, вы можете сделать your_object.methods. Для класса это будут его методы класса. Чтобы просмотреть методы экземпляра класса, вы можете сделать your_class.instance_methods. Поэтому, чтобы перечислить все методы класса Object, вы должны сделать Object.methods, и чтобы увидеть все методы экземпляра объекта, вы должны сделать Object.instance_methods.

Дальнейший совет: Если вы хотите увидеть только методы, которые реализует данный класс (а не методы, унаследованные от его предков), вы можете передать false в качестве аргумента для одного из методов, упомянутых ранее. Так, например, String.instance_methods(false) вернет список методов экземпляра, которые String реализует, но не будет возвращать общие методы объекта, такие как dup и is_a?.

Однако, если вы пытаетесь учиться, просмотр документов для данного класса или расширения класса (например, добавление Rails в String или Date), вероятно, будет лучше.