在Ruby中,是否可以按实例包含模块?
例如,在Scala中,您可以执行以下操作。
val obj = new MyClass with MyTrait
你能否在Ruby中做类似的操作,也许类似于以下的操作?
obj = Object.new include MyModule
是的,你可以:
obj = Object.new
obj.extend MyModule
是的,请参见Object#extend。 所有对象都有extend
方法,它以模块列表作为其参数。 使用模块扩展对象将把模块中的所有实例方法添加为扩展对象的实例方法。
module Noise
def cluck
p "Cluck cluck!"
end
end
class Cucco
end
anju = Cucco.new
anju.extend Noise
anju.cluck
==> "Cluck cluck!"