Зачем нам нужны ClassMethods и InstanceMethods? - PullRequest
15 голосов
/ 18 сентября 2011

Я прочитал API для ActiveSupport :: Concern. Есть ClassMethods и InstanceMethods, мы можем поместить методы класса в ClassMethods.

Но хост M может использовать методы, определенные в M, не так ли? Почему я не могу просто написать:

module M
  def self.x
  end

  def y
  end
end

вместо:

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

Ответы [ 2 ]

12 голосов
/ 18 сентября 2011

Вас может заинтересовать Иегуда по этому шаблону .Я думаю, что причина некоторых из них историческая, поскольку они на самом деле не нужны, если вы не делаете вручную то, что Ruby сделает автоматически через include и extend.

3 голосов
/ 18 сентября 2011

Зависимости позаботились.См. Приведенный пример здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...