我在很多教科书中都读过这篇文章
在Ruby中,类只能是一个类的子类 . 但是,Mixins允许没有共同祖先的类共享方法 .
在实践中,每当我需要实现多重继承时 . 我使用了 Modules
而不是mixins . 例如:
Module name_goes_here
def method_name_goes_here
.....
end
end
然后,我只是将它们包含在一个类中
class MySubClass < MySuperClass
include module_name
end
现在,我已经提到了多个ruby书籍,每个人都在讨论mixins然后突然间,所有人都开始谈论模块,而没有说明mixins和模块的关系是什么 .
所以,问题是:在ruby中模块是== mixins吗?如果是,那么为什么 . 如果没有,那有什么区别?
PS:对不起,如果这是一个愚蠢的问题
2 回答
Mixins是一种语言概念,允许将一些代码注入类中 .
这是在Ruby中通过关键字
include
实现的,它将Module
作为参数 .所以是的,在Ruby中,mixins是用模块实现的 . 但模块除了mixins之外还有其他用途 .
例如,模块也可用于命名空间类或封装实用程序函数,以防止污染全局命名空间 .
来自wikipedia article
所以,是的,Ruby中的模块提供了一种重用功能的方法,而无需自己实例化模块 . 我会说,“ruby中的mixins是用模块实现的”,但不是“mixins是模块,反之亦然” .