说你有
module MyFirstModule
def say_hello
puts "Hello"
end
end
和
class ModuleTester
include MyFirstModule
end
您是否需要在类定义之上使用require MyFirstModule
语句?你有没有需要这个模块?什么时候,为什么?
答案 0 :(得分:3)
您永远不会require
个模块,您require
个文件。
在上面的示例中,如果您发布的两个片段位于不同的文件中,例如my_first_module.rb
和module_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,则需要该文件,以便您可以在该类中包含该模块。