如何列出Ruby类中包含的模块?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (13)

如何列出已包含在Ruby中的类层次结构中的特定类中的模块?这样的:

module SomeModule
end

class ParentModel < Object
  include SomeModule
end

class ChildModel < ParentModel
end

p ChildModel.included_modules #=> [SomeModule]
p ChildModel.included_modules(false) #=> []

列出祖项使模块在树中显得更高:

p ChildModel.ancestors #=> [ChildModel, ParentModel, SomeModule, Object, Kernel]
提问于
用户回答回答于

这样:

class Class
  def mixin_ancestors(include_ancestors=true)
    ancestors.take_while {|a| include_ancestors || a != superclass }.
    select {|ancestor| ancestor.instance_of?(Module) }
  end
end

扫码关注云+社区