Логотип YeaHub

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

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

Тренажёр

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

Обучение

Навыки

Задачи

Войти

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

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

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про Ruby: module, include, extend, prepend, mixin

Что такое модуль? Какие есть варианты подключения модулей в класс?

Этот вопрос проверяет знание модулей Ruby и способов их использования для организации и повторного использования кода.

Короткий ответ

Модуль — это контейнер для методов и констант, который нельзя инстанцировать как объект. В классы его можно подключить через include (включает методы как методы экземпляра), extend (добавляет методы как методы класса) или prepend (переопределяет методы класса).

Длинный ответ

Модули в Ruby используются для организации кода, предотвращения дублирования и добавления функциональности классам. Их нельзя инстанцировать, но можно подключать. Пример:

module Greetable  
  	def greet  
    		"Hello!"  
  	end  
end  

class Person  
  	include Greetable  
end  

person = Person.new  
puts person.greet  # => "Hello!"  

Основные способы подключения:

  • include: Добавляет методы модуля как методы экземпляра класса.

  • extend: Добавляет методы модуля как методы класса.

class Person  
  	extend Greetable  
end  
puts Person.greet  # => "Hello!"  

prepend: Добавляет методы модуля с приоритетом над методами класса.

module Override  
  	def greet  
    		"Hi there!"  
  	end  
end  

class Person  
  	prepend Override  

  	def greet  
    		"Hello!"  
  	end  
end  
puts Person.new.greet  # => "Hi there!"  

Модули эффективны для разделения и повторного использования кода, особенно в больших проектах.

Уровень

  • Рейтинг:

    2

  • Сложность:

    4

Навыки

  • Ruby

    Ruby

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

#module

#include

#extend

#prepend

#mixin

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