根据用例将不同的模块包含到相同的 class
Include different module into same class based on use case
如果有 2 个模块 - 模块 Abc
和模块 Bcd
以及一个 class - class Efg
.
现在我们想在一次实例中将模块 Abc
包含到 class Efg
中,并且需要在另一个实例中将模块 Bcd
包含到 class Efg 中但不能同时使用两个模块。
是否可以在 Ruby class 中完成?
如果我正确理解了您的问题,那么我认为您可以使用 singleton_class 来包含仅用于 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
将有 none 个方法。
如果有 2 个模块 - 模块 Abc
和模块 Bcd
以及一个 class - class Efg
.
现在我们想在一次实例中将模块 Abc
包含到 class Efg
中,并且需要在另一个实例中将模块 Bcd
包含到 class Efg 中但不能同时使用两个模块。
是否可以在 Ruby class 中完成?
如果我正确理解了您的问题,那么我认为您可以使用 singleton_class 来包含仅用于 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
将有 none 个方法。