Что я знаю о модулях: модули не могут быть созданы, не создают объекты и не поддерживают наследование.Сейчас я читаю Rails Guides , чтобы полностью понять функцию автозагрузки Rails.А также вводится тема о константах Ruby, в частности о модулях и классах.
Определения классов и модулей могут быть вложенными для создания пространств имен:
module XML
class SAXParser
Module.nesting.inspect
end
end
=> "[XML::SAXParser, XML]"
Руководства по Rails указывают, что вложение в любом заданном месте(например, Module.nesting, показанный выше) - это коллекция вложенных объектов класса и модуля наружу.Я думаю, это означает, что он расширяется по мере того, как идет наружу, поэтому внутренним будет C :: B :: A, тогда следующий уровень вверх будет B :: A, а следующий уровень вверх будет A, предполагая:
module A
module B
class C
end
end
end
Затем приводится еще один случай:
class XML::SAXParser
Module.nesting.inspect
end
=> "[XML::SAXParser]"
Как видите, вложение отличается.Руководство Rails гласит: «XML не принадлежит ему».Что означает это утверждение?Не принадлежит ли это?В модулях нет наследования.Может кто-нибудь лучше объяснить разницу между этими двумя случаями?