是否可以在ruby中包含每个实例的模块?
即。在Scala中,您可以执行以下操作。
val obj = new MyClass with MyTrait
你可以在ruby中做类似的事情,或许类似于以下内容吗?
obj = Object.new include MyModule
答案 0 :(得分:17)
是的,你可以:
obj = Object.new
obj.extend MyModule
答案 1 :(得分:3)
是的,请参阅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!"