2012-02-27 58 views
0
  1. 獲取屬於模塊A的常量的最短途徑是什麼?如果我做A.constants,它給出了一個A常量的符號名稱數組,而不是A的常量數組。我特別要求這樣做,因爲ancestors,它更直接:A.ancestors給出其祖先的數組,而不是祖先的符號名稱的數組。獲取常量和子類

  2. 獲得B類的直接子類數組的最短途徑是什麼?

回答

1

考慮:

class A;  end 
class A::B < A; end 
  1. 使用const_get通過符號來訪問模塊的常量:

    A.constants.map { |constant| A.const_get constant } 
    # => [A::B] 
    
  2. 您可以將所有現有的類中搜索子類:

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