在Ruby中是否可以按对象包含模块?

21

在Ruby中,是否可以按实例包含模块?

例如,在Scala中,您可以执行以下操作。

val obj = new MyClass with MyTrait

你能否在Ruby中做类似的操作,也许类似于以下的操作?

obj = Object.new include MyModule
2个回答

24

是的,你可以:

obj = Object.new
obj.extend MyModule

7

是的,请参见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!"

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接