【问题标题】:Does ruby provide a method to show the hierarchy calls?ruby 是否提供了一种显示层次结构调用的方法?
【发布时间】:2010-12-08 02:16:57
【问题描述】:

就是这样,我想看看继承固定类的类是什么。在 RUBY 中有这样的方法吗?

Aptana 提供了一个选项来显示这一点,但是有什么方法吗?

谢谢

【问题讨论】:

    标签: ruby hierarchy class-hierarchy


    【解决方案1】:

    您是要查看一个类的所有祖先还是后代?对于祖先,使用:

    Class.ancestors
    

    但是,对于后代来说,没有可比的“开箱即用”方法。您可以使用 ObjectSpace,如下所示,但它很慢并且可能无法跨 Ruby 实现移植:

    ObjectSpace.each_object(Class) do |klass| 
      p klass if klass < StandardError
    end
    

    编辑:

    也可以使用Class#inherited 挂钩来跟踪子类化。但是,这不会捕获在定义跟踪功能之前创建的任何子类,因此它可能不适合您的用例。但是,如果您需要在应用程序中定义的类上以编程方式使用该信息,那么这可能是可行的方法。

    【讨论】:

    • 非常感谢!这正是我想要的! :)
    【解决方案2】:

    Module#ancestors

    例子:

    class Foo
    end
    
    class Bar < Foo
    end
    
    Bar.ancestors # => [Bar, Foo, Object, Kernel]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多