我正在查看ruby mixin博客文章,它说当一个模块包含在一个类中时,会调用其self.included()
方法。
我的问题是,这种行为在哪里正式记录?我似乎无法在ruby-docs.org网站或pickaxe上找到它。
答案 0 :(得分:10)
虽然由于某些原因它不在Ruby Doc,但included
实际上已记录在案。在终端中运行ri Module.included
可提供:
included( othermod )
只要接收器包含在另一个模块中,就会调用回调 或者上课。这应该优先于
Module.append_features
使用 如果您的代码想要在包含模块时执行某些操作 另一个。module A def A.included(mod) puts "#{self} included in #{mod}" end end module Enumerable include A end
此文档可在Ruby source in object.c
中找到。遗憾的是,Module.extended
没有记录。
答案 1 :(得分:1)
我怀疑它不在RubyDoc网站上,因为它是私有方法,并且当前没有显示私有方法。
人们已经意识到这个问题,但是他们还没有找到如何处理私有方法,即使它们不是实现细节。
创建了一个错误报告答案 2 :(得分:0)
似乎只记录公共方法
答案 3 :(得分:0)
两者都记录在第二版pickaxe的第556页(涵盖Ruby 1.8)。那里的文档看起来就像Andrew Marshall发布的ri Module.included
的结果,所以我怀疑这本书的部分是自动生成的。如果它从后来的镐抄本中被删除,那么它可能是由于同一个错误导致它无法显示在ruby-doc.org上。