Этот вопрос проверяет знание модулей 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!"
Модули эффективны для разделения и повторного использования кода, особенно в больших проектах.