self.included(base)在ruby模块中是什么作用?
- 内容介绍
- 文章标签
- 相关推荐
本文共计235个文字,预计阅读时间需要1分钟。
我观察到这种模式,看起来像是在定义一个模块,然后对其进行扩展。以下是简化的版本:
rubymodule Article def self.included(base) base.send(:extend, ModuleMethods) base.send(:include, InstanceMethods) end
module ModuleMethods # ... end
module InstanceMethods # ... endend
在文章模型中使用include Article
module Article::Score def self.included(base) base.send :extend, ClassMethods base.send :include, InstanceMethods end module ClassMethods ... end module InstanceMethods ... end end
然后在文章模型中,我看到了这一点
class Article include Article::Score ... end
所以我的猜测是“base”可能是指文章类,我们只是包含实例方法并扩展类方法.但有人可以解释片段“self.included(base)”并概述那里发生了什么?
包含模块时会调用self.included函数.它允许在基础(包含模块的位置)的上下文中执行方法.本文共计235个文字,预计阅读时间需要1分钟。
我观察到这种模式,看起来像是在定义一个模块,然后对其进行扩展。以下是简化的版本:
rubymodule Article def self.included(base) base.send(:extend, ModuleMethods) base.send(:include, InstanceMethods) end
module ModuleMethods # ... end
module InstanceMethods # ... endend
在文章模型中使用include Article
module Article::Score def self.included(base) base.send :extend, ClassMethods base.send :include, InstanceMethods end module ClassMethods ... end module InstanceMethods ... end end
然后在文章模型中,我看到了这一点
class Article include Article::Score ... end
所以我的猜测是“base”可能是指文章类,我们只是包含实例方法并扩展类方法.但有人可以解释片段“self.included(base)”并概述那里发生了什么?
包含模块时会调用self.included函数.它允许在基础(包含模块的位置)的上下文中执行方法.
