Ruby 获取常量和子类

Ruby 获取常量和子类,ruby,class,module,ruby-1.9,Ruby,Class,Module,Ruby 1.9,获取属于模块a的常数的最短方法是什么?如果我做了A.constants,它将给出A常量的符号化名称数组,而不是A常量数组。我特别提出这个问题,因为对于祖先,它更简单:A.祖先返回其祖先的数组,而不是祖先的符号化名称数组 获取类B的直接子类数组的最短方法是什么 鉴于: 您可以在所有现有类中搜索子类: ObjectSpace.each_object(Class).select { |klass| klass.superclass == A } # => [A::B] ObjectSpace.

获取属于模块
a
的常数的最短方法是什么?如果我做了
A.constants
,它将给出
A
常量的符号化名称数组,而不是
A
常量数组。我特别提出这个问题,因为对于
祖先
,它更简单:
A.祖先
返回其祖先的数组,而不是祖先的符号化名称数组

  • 获取类
    B
    的直接子类数组的最短方法是什么

  • 鉴于:

  • 您可以在所有现有类中搜索子类:

    ObjectSpace.each_object(Class).select { |klass| klass.superclass == A }
    # => [A::B]
    ObjectSpace.each_object(Class).select { |klass| klass.superclass == A::B }
    # => []
    
  • A.constants.map { |constant| A.const_get constant }
    # => [A::B]
    
    ObjectSpace.each_object(Class).select { |klass| klass.superclass == A }
    # => [A::B]
    ObjectSpace.each_object(Class).select { |klass| klass.superclass == A::B }
    # => []