В соответствии с документацией mod.const_get(sym) "Возвращает значение именованной константы в модуле".
Я также знаю, что const_get по умолчанию может искать цепочку наследования получателя. Итак, следующие работы:
class A; HELLO = :hello; end
class B < A; end
B.const_get(:HELLO) #=> :hello
Я также знаю, что классы в подклассе Ruby Object, так что вы можете использовать const_get для поиска глобальных констант, даже если приемник является нормальным классом:
class C; end
C.const_get(:Array) #=> Array
Однако, и здесь я запутался - модули не подклассы Object. Итак, почему я могу по-прежнему искать "глобальные" константы из модуля с помощью const_get? Почему выполняется следующее?
module M; end
M.const_get(:Array) #=> Array
Если документация верна - const_get просто ищет константу, определенную под приемником или его суперклассами. Но в коде, приведенном выше, Object не является суперклассом M, так почему же можно искать Array?
Спасибо