Я начал изучать Rails 3.0 и решил потратить некоторое время на изучение Pure Ruby 1.9 и интересно, есть ли способ просмотреть класс объектов, поскольку он всегда доступен. Например, есть команда, которую вы можете ввести в IRB, например, которая отобразит все методы в классе объектов, такие как to_a, to_s и т. Д. Спасибо за любую помощь.Как я могу увидеть все методы/свойства класса объектов
ответ
#methods
- это метод, который вы хотите. Он просто возвращает ar массив строк, которые являются всеми именами методов, на которые отвечает объект.
Object.new.methods
Или более читаемым в IRB:
puts Object.new.methods.sort.to_yaml
Или для методов класса:
Object.methods
Одно предостережение, хотя, некоторые объекты позволяют методы, которые не будут перечисленные здесь. Все, что реализовано с помощью крючка в #method_missing
, не появится. Это включает в себя множество методов ActiveRecord
, а также других объектов рельсов.
Но пока ничего сложного не происходит, это список, который вы, похоже, хотите.
Чтобы посмотреть методы объекта, вы можете сделать 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), вероятно, будет лучше.
Niggle: '' methods'' возвращает массив символов, а не строки. – cantlin
В рубине 1.8.7 вы получаете строки, что, к сожалению, мне больше всего знакомо. –
yea thanx очень полезно, Думал, что никто не поймет мой вопрос, спасибо –