Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про Ruby: module, mixin, namespace, inheritance, method

Что такое модуль и зачем его используют? Чем модуль отличается от класса?

Вопрос проверяет понимание концепции модулей в 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"

Уровень

  • Рейтинг:

    3

  • Сложность:

    5

Навыки

  • Ruby

    Ruby

Ключевые слова

#module

#mixin

#namespace

#inheritance

#method

Подпишись на Ruby Developer в телеграм