Подумайте о том, что aux
есть. Какой объект ответит aux
? Это метод экземпляра, который означает, что экземпляры классов, которые включают ModName, будут отвечать на него. Сам модуль ModName не является экземпляром такого класса. Это также не сработает, если вы определили ModName как класс - вы не можете вызвать метод экземпляра без экземпляра.
Модули очень похожи на классы, которые могут быть смешаны с другими классами, чтобы добавить поведение. Когда класс смешивается в модуле, все методы экземпляра модуля становятся экземплярами класса класса. Это способ реализации множественного наследования.
Они также служат заменой пространств имен, поскольку каждый модуль определяет пространство имен. Но это несколько не связано. (Кстати, классы также имеют свои собственные пространства имен, но делая это класс подразумевает, что вы будете создавать экземпляры этого, поэтому они концептуально неправильно для этой цели.)
для одноразового использования одноразового, вы можете сделать 'Object.new.extend (ModeName) .aux' – AJcodez