Логотип YeaHub

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

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

Тренажёр

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

Обучение

Навыки

Задачи

Войти

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

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

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад

Что такое 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

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

#include

#extend

#module

#mixin

#class

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