考虑本文中的代码:
class Coffee
def cost
2
end
end
module Milk
def cost
super + 0.4
end
end
module Sugar
def cost
super + 0.2
end
end
coffee = Coffee.new
coffee.extend(Milk)
coffee.extend(Sugar)
coffee.cost # 2.6, while I expected 2.2
它是 2.6 而不是 2.2 的原因是因为每次调用都会extend
将一个模块添加到实例单例类祖先链中,如下所述。