Ruby能够include一个模块在另外某个模块之前或者之后吗?

Hi all,这个问题我难以用一句话来讲清楚,就干脆上代码吧我的问题是这样的:

# 假设现在有若干个模块 A B C D E ...# 先给类F include进若干个模块class F  include A  include B  include Cend# 此时看ancestors,可以发现,C B A按照include时相反顺序出现在了F的后面F.ancestors # => [F, C, B, A, Object, PP::ObjectMixin, Kernel, BasicObject]# 如果之后(在自定义的某个插件中,不能修改原来的代码)希望给F补充一个模块Dclass F  include Dend# 那么此时D模块就会出现在F的后面,C B A的前面,意思是将按照这个顺序搜索方法F.ancestors # => [F, D, C, B, A, Object, PP::ObjectMixin, Kernel, BasicObject]# 但是此时我希望给F再补充一个模块Eclass F  ??? include E ???end# 然后希望在输出ancestors的时候得到这样一个结果,即E被include在了B和A之间的位置,该如何实现?F.ancestors # => [F, D, C, B, E, A, Object, PP::ObjectMixin, Kernel, BasicObject]

也许把E这个模块include在B模块里会是个解决方案

module B  include Eend

但是这样毫无疑问的会影响到所有include B这个模块的类,并不是我希望得到的效果。当然肯定不能修改class F的源代码。所以请教大家,对此有什么好的并且比较简单的解决方案吗?谢谢

Ruby能够include一个模块在另外某个模块之前或者之后吗?

相关文章:

你感兴趣的文章:

标签云: