說,我有以下2類:檢測一個方法未被覆蓋
class A
def a_method
end
end
class B < A
end
是否有可能從(的實例)類B中方法a_method
是僅在所定義的範圍內檢測超類,因此不會在B中被覆蓋?
更新:解決方案
雖然我已經打上查克的回答是「接受」,後來保羅Perrota讓我意識到,該解決方案能夠明顯更簡單,而且它可能會與早期版本的工作Ruby也是。
檢測是否「a_method」在B被覆蓋:
B.instance_methods(false).include?("a_method")
而對於類方法,我們使用singleton_methods
類似:
B.singleton_methods(false).include?("a_class_method")
非常酷,謝謝!看到最初提到的Ruby版本後,特別高興從1.9降低到1.8.7(我實際使用它)。 – mxgrn 2009-11-08 23:34:55
是的,我對此有點模糊。起初我認爲它與1.8.7一起工作,然後看到'Method#owner'不在1.8.7 ri文檔中,所以我將它改爲1.9,然後我實際檢查了1.8.7中是否存在該方法,並看到我第一次做對了。很高興它有幫助。 – Chuck 2009-11-08 23:55:10