в чем разница между расширенным и расширением hook_object - PullRequest
0 голосов
/ 14 ноября 2018

может кто-нибудь объяснить разницу между расширенным и расширением hook_object. В интернете нет соответствующей документации для этого.

Ответы [ 2 ]

0 голосов
/ 14 ноября 2018

extend_object - это частный метод API, используемый extend, и он добавляет константы и методы модуля

extend_object(p1) private

Расширяет указанный объект путем добавления констант этого модуляи методы (которые добавляются как одноэлементные методы).Это метод обратного вызова, используемый Object#extend.

https://apidock.com/ruby/Module/extend_object

extended - это просто обратный вызов, который может использоваться разработчиком для запуска определенного кода, когда модульрасширяется.https://ruby -doc.org / ядро-2.2.0 / Module.html # метод-я-продлен

0 голосов
/ 14 ноября 2018

По сути, extend_object - это метод, который выполняет расширение.Вы можете переопределить его, например, для создания проверки типов перед расширением:

module Foo
  def self.extend_object(obj)
    raise(TypeError, "No strings!") if obj.is_a?(String)
    super # need to call super or object
          # won't be extended
  end

  def self.extended(obj)
    puts "#{obj.inspect} was extended with #{self}"
  end
end

1.extend(Foo)
"1".extend(Foo) # raises TypeError: No strings!
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...