当我进入irb并输入一个不存在的命令时,我收到一条错误说明
"undefined local variable or method 'my_method' for main:Object (NameError)"
有没有办法获得哪些局部变量或方法可用?这对于探索ruby非常有用。
答案 0 :(得分:23)
在内核,对象和模块中查找方法:例如local_variables,instance_methods,instance_variables。
其他很棒的方法。 inspect是另一个。
答案 1 :(得分:14)
很棒的答案 在您探索时,您可以随意使用这些:
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中检查和反映那么有趣。
快乐探索 -
佩里
答案 2 :(得分:6)
要查找实例变量,您可以使用Kernel#instance_variables
作为Zabba指出。
对于对象上可用的方法,我使用my_object.methods - Object.methods
来找出我的对象可用的非显而易见的方法。这缩小了列表,并且相当容易阅读。