有人能解释扩展对象钩子和扩展对象钩子的区别吗互联网上没有这方面的适当文件。

最佳答案

实际上,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!

关于ruby - extend和extend_object钩子(Hook)有什么区别,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53300220/

10-11 23:19