我来自Java,现在我更多地使用Ruby
我不熟悉的一个语言功能是模块。我想知道什么是模块,什么时候使用,为什么在类上使用模块
╔═══════════════╦═══════════════════════════╦═════════════════════════════════╗
║ ║ 班║ 单元║
╠═══════════════╬═══════════════════════════╬═════════════════════════════════╣
║ 实例化║ 可以实例化║ 无法*实例化║
╟───────────────╫───────────────────────────╫─────────────────────────────────╢
║ 用法║ 对象创建║ 混合设施。提供║
║ ║ ║ 名称空间。║
╟───────────────╫───────────────────────────╫─────────────────────────────────╢
║ 超类║ 单元║ 对象║
╟───────────────╫───────────────────────────╫─────────────────────────────────╢
║ 方法║ 类方法和║ 模块方法和║
║ ║ 实例方法║ 实例方法║
╟───────────────╫───────────────────────────╫─────────────────────────────────╢
║ 遗产║ 继承行为并能║ 没有继承权║
║ ║ 为继承奠定基础║ ║
╟───────────────╫───────────────────────────╫─────────────────────────────────╢
║ 包含║ 不能包括在内║ 可以包含在类和║
║ ║ ║ 通过使用include║
║ ║ ║ 命令(包括所有║
║ ║ ║ 实例方法作为实例║
║ ║ ║ 类/模块中的方法)║
╟───────────────╫───────────────────────────╫─────────────────────────────────╢
║ 扩大║ 无法扩展║ 模块可以通过以下方式扩展实例:║
║ ║ 扩展命令║ 使用extend命令(extends)║
║ ║ (仅限继承)║ 单例给定实例║
║ ║ ║ 方法(来自模块)║
╚═══════════════╩═══════════════════════════╩═════════════════════════════════╝