Что такое хуки и зачем их используют (inherited, included, method_added, singleton_method_added, method_missing)?

Этот вопрос проверяет знание механизмов, которые позволяют реагировать на изменения в структуре классов и объектов.

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

Хуки — это специальные методы, которые автоматически вызываются при определённых событиях в программе, таких как наследование или добавление методов. Они помогают контролировать и расширять поведение классов.

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

Ruby предоставляет хуки для реагирования на изменения:

 

inherited: Вызывается, когда класс наследуется от другого.

class Parent
  def self.inherited(subclass)
    puts "#{subclass} наследует от #{self}"
  end
end

class Child < Parent; end
# => "Child наследует от Parent"

 

included: Вызывается, когда модуль подключается через include.

module A
  def self.included(base)
    puts "#{base} подключил #{self}"
  end
end

class B
  include A
end
# => "B подключил A"

 

method_added: Вызывается при добавлении нового метода в класс.

class MyClass
  def self.method_added(method_name)
    puts "Добавлен метод #{method_name}"
  end

  def my_method; end
end

 

singleton_method_added: Вызывается при добавлении singleton-методов.

 

method_missing: Обрабатывает вызовы несуществующих методов.

class MyClass
  def method_missing(name, *args)
    puts "Метод #{name} не найден"
  end
end

obj = MyClass.new
obj.unknown_method # => "Метод unknown_method не найден"


Хуки — мощный инструмент для создания гибкого и расширяемого кода, особенно в библиотеках и фреймворках.

Уровень

  • Рейтинг:

    3

  • Сложность:

    6

Навыки

  • Ruby

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

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