获取属于模块A
的常量的最短方法是什么?如果我A.constants
,它会给出一个A
常量的符号化名称数组,而不是A
常量数组。我特别想问这个因为ancestors
,它更简单:A.ancestors
回馈其祖先的数组,而不是祖先的符号名称数组。
获取类B
的直接子类数组的最短方法是什么?
答案 0 :(得分:1)
假设:
class A; end
class A::B < A; end
使用const_get
按符号访问模块的常量:
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 }
# => []