Логотип YeaHub

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

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

Тренажёр

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

Обучение

Навыки

Задачи

Войти

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

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

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

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

Что такое include и extend и в чем разница между ними?

Вопрос помогает понять, как подключать модули к классам или объектам и в чем различие между этими способами.

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

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

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

Ruby предоставляет два способа добавления функциональности модулями: include и extend.

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

    module Greet
      	def hello
        		"Hello!"
      	end
    end
    
    class Person
      	include Greet
    end
    
    person = Person.new
    puts person.hello # => "Hello!"
  • extend:
    Добавляет методы модуля как методы самого класса.

    module Greet
      	def hello
        		"Hello from the class!"
      	end
    end
    
    class Person
      	extend Greet
    end
    
    puts Person.hello # => "Hello from the class!"

Разница:

  • include добавляет методы модуля в экземпляры класса, а extend — в сам класс (или объект).

  • include используется для поведения объектов, а extend — для поведения классов.

Вывод:

Модули с include часто применяются для миксинов, а с extend — для расширения функциональности классов.

Уровень

  • Рейтинг:

    3

  • Сложность:

    7

Навыки

  • Ruby

    Ruby

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

#include

#extend

#module

#mixin

#class

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