如果有两个模块-模块Abc
和模块Bcd
以及一个类-类Efg
。
现在,我们希望在一个实例中将模块Abc
包含到类Efg
中,并且需要在另一个实例中将模块Bcd
包含到类Efg中,但不能同时包含两个模块。
在Ruby类中可以这样做吗?
如果我正确理解你的问题,那么我认为你可以使用singleton_class只为类的特定实例包含一个模块:
inst1 = Efg.new
inst2 = Efg.new
inst3 = Efg.new
inst1.singleton_class.include Asd
inst2.singleton_class.include Bcd
现在inst1
将具有来自Asd
的方法,而inst2
将具有来自于Bcd
的方法。inst3
将不具有任何方法。