OCaml 中的 Module 和 Class 有什么区别。
从我的搜索中,我发现了这个:
两者都提供了抽象和封装、子类型(通过省略对象中的方法和模块中的字段)和继承(对象使用继承;模块使用包含)的机制。但是,这两个系统没有可比性。一方面,对象有一个优势:对象是一等值,而模块不是——换句话说,模块不支持动态查找。另一方面,模块有一个优势:模块可以包含类型定义,而对象不能。
首先,我不明白“模块不支持动态查找”是什么意思。在我看来,抽象和多态确实意味着父指针可以引用子实例。那是“动态查找”吗?如果不是,那么动态查找的实际含义是什么?
在实际中,我们什么时候选择使用Module,什么时候使用Class?