Вопрос проверяет понимание концепции модулей в Ruby, их назначения и отличий от классов.
Модуль в Ruby — это способ группировать методы, константы и другие модули для их дальнейшего использования в классах. Основное отличие модуля от класса — его нельзя создавать с помощью new. Модули часто применяются для организации кода и реализации множественного наследования через миксины.
Модуль в Ruby — это объект, предназначенный для объединения методов, констант и других модулей с целью их повторного использования. В отличие от классов, модули не могут быть экземплярами и не поддерживают наследование. Они применяются в двух основных сценариях:
Для миксинов — добавления общих методов в несколько классов.
Для пространств имён — группировки классов и методов под одним логическим именем.
Пример создания модуля:
module Greetable
def greet
"Hello!"
end
end
class User
include Greetable
end
user = User.new
puts user.greet # => "Hello!"Отличия модуля от класса:
Модуль нельзя инстанцировать (Module.new вызовет ошибку).
Класс поддерживает наследование, а модуль — нет.
Модули часто используются как контейнеры для методов или как миксины.
Использование пространств имён:
module Admin
class User
def role
"Admin"
end
end
end
admin_user = Admin::User.new
puts admin_user.role # => "Admin"