2013-08-22 113 views
12

給定一個父類有沒有辦法在加載時爲每個子類插入代碼?即。Ruby:爲每個子類執行代碼

考慮:ParentClass,我怎麼插入的代碼如下所示:

class ChildClass < ParentClass 
    execute_function 

    ... 
end 

ParentClass所有子類?

+0

?這段代碼應該做什麼? –

+0

@SergioTulentsev Err,如果父類未加載,如何加載類? – meagar

+0

@meagar:這是深夜,我問傻問題:) –

回答

13

ParentClass覆蓋繼承的方法

class ParentClass 
    def self.inherited(subclass) 
     execute_function 
     super 
    end 
    ... 
end 

見:如果什麼這些類已經裝載http://ruby-doc.org/core-2.0/Class.html#method-i-inherited

+0

哇...花了這麼多時間尋找這個。爲了安全正確使用'super(子類)'是正確的? – s12chung

+2

你可以但不是必需的。沒有參數的'super'將使用相同的參數調用具有相同名稱的父類中的方法。 – kristenmills

+0

哇。謝謝!我不知道那個:) – s12chung