我有一个模块和一个类.
module Dog
def speak
"woof"
end
end
class Daschund; end
我创建了该类的两个单独的实例.
sausage = Daschund.new
saveloy = Daschund.new
如果我想添加Dog#woof
作为我的两个新对象的实例方法,我可以通过两种方式来实现:
class << sausage
include Dog
end
> sausage.speak
=> "woof"
saveloy.extend Dog
> saveloy.speak
=> "woof"
这两种方法是等价的吗?我知道第一个将模块的方法添加到对象的元类中.object#extend
会做同样的事情吗?或者,它正在做一些略有不同的事情?有什么方法可以证明这一点吗?