深入理解 Ruby 对象模型:从基础到应用
1. 猴子补丁的问题与启示
在查看 irb 输出时,我们发现了一个问题。 Array 类已经有一个名为 replace 的方法,当我们定义自己的 replace 方法时,无意中覆盖了原有的 replace 方法,而这个方法是 Bookworm 其他部分所依赖的。
这就是开放类的阴暗面:如果随意为类添加功能,就可能会遇到像这样的 bug。有些人会对这种鲁莽的类修补方式表示不满,并将这种代码称为“猴子补丁(Monkeypatch)”。
发现问题后,我们和 Bill 将 Array#replace 重命名为 Array#substitute ,并修复了测试和调用代码。这次经历虽然艰难,但也激发了我们对 Ruby 类的好奇心,是时候深入了解它们了。
2. 探索对象内部
首先来看对象内部包含什么。想象运行以下代码:
class MyClass
def my_method
@v = 1
end
end
obj = MyClass.new
obj.class
# => MyClass
如果能打开 Ruby 解释器查看 obj 对象,会看到什么呢?
超级会员免费看
订阅专栏 解锁全文
1238

被折叠的 条评论
为什么被折叠?



