2011-09-18 18 views
14

Leí el API para ActiveSupport :: Preocupación. Hay ClassMethods y InstanceMethods, podemos poner métodos de clase en ClassMethods.¿por qué necesitamos ClassMethods e InstanceMethods?

Pero el host M puede usar los métodos definidos en M, ¿o no? ¿Por qué no puedo simplemente escribir:

module M 
    def self.x 
    end 

    def y 
    end 
end 

en lugar de:

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

Respuesta

11

Te puede interesar Yehuda's take on this pattern. Creo que la razón de esto es histórica, ya que no son realmente necesarios a menos que esté haciendo manualmente lo que Ruby hará automáticamente a través de include y extend.

1

dependencias son atendidos. Vea el ejemplo provisto here.

Cuestiones relacionadas