简体   繁体   中英

why do we need ClassMethods and InstanceMethods?

I read the API for ActiveSupport::Concern. There are ClassMethods and InstanceMethods , we can put class methods in ClassMethods .

But the M 's host can use the methods defined in M , can't it? Why can't I just write:

module M
  def self.x
  end

  def y
  end
end

rather than:

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

You might be interested in Yehuda's take on this pattern . I think the reason for some of it is historical, since they're not really needed unless you're doing manually what Ruby will do automatically through include and extend .

Dependencies are taken care of. See the example provided here .

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM