2013-08-22 6 views
12

Dato una classe genitore esiste un modo per inserire il codice per ogni sottoclasse in caricamento? vale a dire.Ruby: codice di esecuzione per ogni sottoclasse

Data: ParentClass, come faccio a inserire il codice in questo modo:

class ChildClass < ParentClass 
    execute_function 

    ... 
end 

per tutte le classi figlio di ParentClass?

+0

Che cosa succede se le classi sono già caricati? Cosa dovrebbe fare questo codice? –

+0

@SergioTulentsev Err, come può essere caricata una classe se il suo genitore non è caricato? – meagar

+0

@meagar: è notte fonda e sto facendo domande stupide :) –

risposta

13

Nel ParentClass l'override del metodo ereditato

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

See: http://ruby-doc.org/core-2.0/Class.html#method-i-inherited

+0

wow ... ho passato così tanto tempo a cercarlo. sarebbe corretto usare 'super (sottoclasse)' per sicurezza corretta? – s12chung

+2

Si potrebbe, ma non è necessario. 'super' senza argomenti chiamerà il metodo nella classe genitore con lo stesso nome usando gli stessi argomenti. – kristenmills

+0

wow. Grazie! non lo sapevo neanche :) – s12chung