Что такое eigenclass?
Вопрос направлен на проверку знания метаклассов в Ruby и их назначения.
Короткий ответ
Eigenclass — это уникальный, скрытый класс, присоединённый к каждому объекту. В нем хранятся методы, определённые только для этого объекта.
Длинный ответ
В Ruby eigenclass (или метакласс) используется для добавления методов конкретному объекту. Когда вы определяете метод только для одного объекта, он добавляется в его eigenclass.
Пример:
obj = "Hello"
def obj.greet
"Hello from eigenclass!"
end
puts obj.greet # => Hello from eigenclass!
Метакласс можно открыть напрямую с помощью конструкции class << object:
obj = "Ruby"
class << obj
def unique_method
"I'm unique to this object!"
end
end
puts obj.unique_method # => I'm unique to this object!
Метаклассы позволяют динамически добавлять методы и изменять поведение отдельных объектов, что делает их мощным инструментом в Ruby.