Получить все локальные переменные или доступные методы из irb? - PullRequest
21 голосов
/ 25 апреля 2011

Когда я захожу в irb и набираю несуществующую команду, я получаю сообщение об ошибке

"undefined local variable or method 'my_method' for main:Object (NameError)"

Есть ли способ просто получить список доступных локальных переменных или методов? Это было бы очень полезно для изучения рубина.

Ответы [ 3 ]

23 голосов
/ 25 апреля 2011

Поиск методов в ядре, объекте и модуле: например, local_variables , instance_methods , instance_variables .

Другие великие методы там. проверить это еще один.

14 голосов
/ 25 апреля 2011

Великолепные ответы.
Когда вы исследуете, у вас есть в вашем распоряжении:

obj.private_methods 
obj.public_methods 
obj.protected_methods 
obj.singleton_methods

и

MyClass.private_instance_methods 
MyClass.protected_instance_methods 
MyClass.public_instance_methods

Использование как:

obj.public_methods.sort

Также может упростить рецензирование.

Существуют некоторые особые случаи, например

String.instance_methods(false).sort

..., которые дадут вам только методы экземпляра, определенные в классе String, исключая классы, которые он унаследовал от любогопредки.Как я ожидаю, вы знаете, вы можете увидеть больше здесь: http://www.ruby -doc.org / docs / ProgrammingRuby / но это не так весело, как осматривать и отражать в irb.

Счастливого изучения-

Перри

6 голосов
/ 25 апреля 2011

Чтобы узнать переменные экземпляра, вы можете использовать Kernel#instance_variables, как указал Забба.

Для методов, доступных для объекта, я использую my_object.methods - Object.methods, чтобы выяснить, какие неочевидные методы доступны для моего объекта. Это сужает список и легко читается.

...