我想要A::B::C.nesting #=> [A::B::C, A::B, A]
之类的东西但是在这些模块的声明之外......我怎么能得到这个? ActiveSupport已启用。感谢。
答案 0 :(得分:2)
class Module
def nesting
a = inspect.split("::")
a.length.downto(1).to_a.map{|l| const_get(a[0, l].join("::"))}
end
end
或
class Module
def nesting
s = inspect
s.count(":")./(2).downto(0).to_a.map{|l| const_get(s[/[^:]+(?:::[^:]+){#{l}}/])}
end
end