ruby - 扩展和扩展对象挂钩有什么区别
问题描述
有人可以解释扩展和扩展对象挂钩之间的区别吗?互联网上没有适当的文档。
解决方案
本质上,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!
推荐阅读
- reactjs - React Context 是如何实现的?
- javascript - QZ托盘将数据保存为pdf而不是打印
- react-native - 将参数传递给嵌套导航器
- c++ - C++如何调用D'tor?
- flutter - Flutter android 模块化依赖问题
- css - 是否有 (CSS) 过滤器可以在另一张图片上剪掉一张图片的轮廓?
- node.js - 如何在执行 findOneAndDelete 之前获取 _id
- python - 在 Django 中过滤多个模型
- xquery - 无法使用 XQuery 和 eXist-db 将文本显示到段落中
- javascript - 对象构造函数