當我進入IRB並輸入一個不存在的命令,我得到一個錯誤,說明從irb獲取所有本地變量或可用方法?
"undefined local variable or method 'my_method' for main:Object (NameError)"
有沒有辦法,只是得到一個什麼樣的局部變量或方法是可用列表?這對於探索Ruby來說非常有用。
當我進入IRB並輸入一個不存在的命令,我得到一個錯誤,說明從irb獲取所有本地變量或可用方法?
"undefined local variable or method 'my_method' for main:Object (NameError)"
有沒有辦法,只是得到一個什麼樣的局部變量或方法是可用列表?這對於探索Ruby來說非常有用。
查找內核,對象和模塊中的方法:例如local_variables,instance_methods,instance_variables。
那裏的其他偉大的方法。 inspect是另一個。
要找出實例變量,您可以使用Kernel#instance_variables
,正如Zabba指出的那樣。
對於對象上可用的方法,我使用my_object.methods - Object.methods
來找出可用於對象的非顯而易見的方法。這縮小了列表的範圍,並且相當容易閱讀。
重要的答案。
當你探討,你們這些在您的處置:
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中檢查和反射那樣有趣。
快樂探索 -
佩裏
你的意思是'用於顯示實例變量inspect'? – sawa 2011-04-25 04:13:26
@sawa,inspect也會顯示instance_variables(也就是說,除非它已被一個類重寫,以顯示其他的東西) – Zabba 2011-04-25 04:16:40
有人可以解釋這個人如何得到提示:「顯示所有可用的152)方法嗎?」 http://www.youtube.com/watch?v=J_9H1WPV2Ws#t=0m15s – lukemh 2011-05-04 19:15:58