2011-09-18 17 views
14

Przeczytałem API dla ActiveSupport :: Concern. Istnieją ClassMethods i InstanceMethods, możemy umieścić metody klasy w ClassMethods.dlaczego potrzebujemy ClassMethods i InstanceMethods?

Ale host M może korzystać z metod określonych w M, nieprawdaż? Dlaczego nie mogę po prostu napisać:

module M 
    def self.x 
    end 

    def y 
    end 
end 

zamiast:

module M 
    module ClassMethods 
    def x 
    end 
    end 
    module InstanceMethods 
    def y 
    end 
    end 
end 

Odpowiedz

11

Możesz być zainteresowany Yehuda's take on this pattern. Myślę, że niektóre z nich są historyczne, ponieważ nie są naprawdę potrzebne, chyba że robisz ręcznie to, co Ruby zrobi automatycznie poprzez include i extend.

1

Zależności są załatwione. Zobacz przykład podany here.

Powiązane problemy