3、深入理解 Ruby 对象模型:从基础到应用

深入理解 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 对象,会看到什么呢?

2.1 实例变量

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值