什么时候需要Ruby中的模块?

时间:2014-04-28 00:11:45

标签: ruby

说你有

module MyFirstModule
  def say_hello
    puts "Hello"
  end
end

class ModuleTester
  include MyFirstModule
end

您是否需要在类定义之上使用require MyFirstModule语句?你有没有需要这个模块?什么时候,为什么?

2 个答案:

答案 0 :(得分:3)

您永远不会require个模块,您require个文件。

在上面的示例中,如果您发布的两个片段位于不同的文件中,例如my_first_module.rbmodule_tester.rb,那么你必须这样做

require "my_first_module"

之后才能引用MyFirstModule

(显然,如果它们在同一个文件中,则不需要require语句,并且无论如何都没有意义,因为require没有文件。)

require做的是在库路径中查找给定的Ruby文件,然后加载Ruby文件,就像执行它一样。在程序运行期间,该文件最多只会加载一次(这与load命令不同,后者与require非常相似)。

在上面的示例中,在您使用MyFirstModule之前,您必须require定义它的文件。

请注意,有一个自动加载机制可以自动require个文件。此外,Rails会自动require大多数类。所以不要混淆,在某些情况下,require语句似乎没有必要。

答案 1 :(得分:0)

您无需要求。 'Include'会根据您的需要将方法say_hello暴露给您的班级。 'Require'用于从另一个文件中提取所有代码。因此,如果您在另一个文件中定义了MyFirstModule,则需要该文件,以便您可以在该类中包含该模块。