有一个很好的技巧可以帮助找到继承的子类:
class SubClasses
@@subclasses ||= []
def self.inherited subclass
@@subclasses << subclass
end
def self.subclasses
@@subclasses
end
end
Run Code Online (Sandbox Code Playgroud)
此外,我发现使用Foo.included_modules.
但它在 上不可用Module。我如何获取包含模块的所有类?是否可以?
更新
解决了!
要监视模块何时包含在另一个模块或类中,请使用included钩子:
module Parent
class << self
attr_reader :includers
end
def self.included(base)
@includers ||= []
@includers << base.name
end
end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
961 次 |
| 最近记录: |