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

Уровень

  • Рейтинг:

    3

  • Сложность:

    6

Навыки

  • Ruby

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

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