假设我正在编写一个 Ruby gem。我想设计将要使用的类和模块。
- 如何识别它们?
- 哪里需要类,哪里需要模块?
最佳答案
您的问题是关于 Ruby 语言的主要设计特征之一。
基本上,您可以将模块视为工具的集合,将类视为能够与这些工具混合的对象的集合。
Ruby faq说到模块:
Modules are collections of methods and constants. They cannot generate instances.
当你想提供一些东西时,你需要一个类。你可以做一个 MyClass.new
,你不能用一个模块:MyModule.new
不会工作。
另一方面:
Classes may generate instances (objects), and have per-instance state (instance variables).
当您想提供一种做某事的方法时,您将需要一个模块。您可以执行 MyModule.doSomething(SomeParams)
。您也可以使用类方法来做到这一点,但您将无法使用它进行一些混合。
参见 this faq以获得更详细的答案。
关于ruby - 如何识别Ruby软件必要的类和模块?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9079861/