2010-08-24 3 views

Répondre

2

En supposant que vous voulez dire les classes imbriquées dans le sens suivant:

class A 
    class B; end 
    class C; end 
end 

B et C sont 'imbriquées' dans A alors ce qui suit devrait fonctionner:

class Class 
    def nested_classes 
     constants.collect { |c| const_get(c) }. 
      select { |m| m.instance_of?(Class) } 
    end 
end 

A.nested_classes => [A::B, A::C] 

EDIT: Vous devrez peut-être utilisez des constantes (false) pour empêcher la recherche constante de modules plus haut dans la chaîne d'héritage.

+0

Merci pour la réponse. – Bijan

Questions connexes