2009-09-17 2 views
2

«abc» .respond_to? (: Sub) возвращает true, но String.respond_to? (: Sub) возвращает false. Второй возвращает false, поскольку он задает вопрос, имеют ли объекты класса Class метод sub, поскольку String является объектом класса. То же самое для методов() ...Ruby: Как получить методы класса без объекта?

Как это сделать и особенно отвечать на_ (?) Без создания объекта этого класса.

ответ

2

Если вы пытаетесь подтвердить, существует ли способ, String.method_defined? :sub будет работать. Если вы специально интересуетесь методами экземпляра, используйте что-то вроде:

String.instance_methods.index 'sub' 

Обратите внимание, что вы должны использовать строку, а не символ.

+0

Array # include? больше проявляет намерение, чем индекс Array #. –

5

Вы можете использовать метод method_defined?, указанный в классе Module.

Смежные вопросы