Как вы определяете вложенные классы класса? - PullRequest
2 голосов
/ 24 августа 2010

Как в Ruby вы определяете вложенные классы класса?

1 Ответ

2 голосов
/ 24 августа 2010

Предполагается, что вы имеете в виду вложенные классы в следующем смысле:

class A
    class B; end
    class C; end
end

Если B и C «вложены» в A, то должно работать следующее:

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]

РЕДАКТИРОВАТЬ: вам может понадобиться использовать константы (false), чтобы предотвратить постоянный поиск модулей дальше по цепочке наследования.

...