ruby模块self.included和self.extended行为记录在哪里?

Zee*_*shi 11 ruby mixins

我正在查看ruby mixin博客文章,它说当一个模块包含在类中时,它的self.included()方法被调用.

我的问题是,这种行为在哪里正式记录?我似乎无法在ruby-docs.org网站或pickaxe上找到它.

And*_*all 10

虽然由于某些原因它不在Ruby Doc上,但included实际上是有记录的.ri Module.included在终端中运行提供:

included( othermod )
Run Code Online (Sandbox Code Playgroud)

只要接收器包含在另一个模块或类中,就会调用回调.Module.append_features 如果您的代码想要在模块包含在另一个模块中时执行某些操作,则应优先使用此选项.

module A
  def A.included(mod)
    puts "#{self} included in #{mod}"
  end
end
module Enumerable
  include A
end
Run Code Online (Sandbox Code Playgroud)

这个文档可以在Ruby源代码中找到object.c.可悲的是,Module.extended没有记录.

  • `Module.extended`就像`included`,除了它在你调用`extend some_module`时运行,而不是在你调用`include some_module`时运行. (4认同)