Подтвердить что ты не робот

Получить все локальные переменные или доступные методы из irb?

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

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

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

4b9b3361

Ответ 2

Отличные ответы.
По мере того как вы исследуете, вы имеете их в своем распоряжении:

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.

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

Перри

Ответ 3

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

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