include和require在Ruby中有什么区别?
我的问题类似于“在Ruby中包含和扩展有什么区别?”。
Ruby中的require
和include
什么区别? 如果我只是想在我的课程中使用模块中的方法,我是否require
它或include
它?
Ruby中的“include”和“require”有什么区别?
回答:
include和require方法做了非常不同的事情。
require方法在大多数其他编程语言中都包括:运行另一个文件。 它还会跟踪您过去需要的内容,而且不会要求相同的文件两次。 要运行另一个没有这个附加功能的文件,你可以使用load方法。
include方法从另一个模块获取所有方法,并将它们包含到当前模块中。 这是一个语言级别的事情,而不是像文件级别的要求那样。 include方法是用其他模块“扩展”类的主要方式(通常称为混合)。 例如,如果你的类定义了“each”方法,你可以包含mixin模块Enumerable,它可以作为一个集合。 这可能会令人困惑,因为包含动词在其他语言中的使用方式非常不同。
资源
所以如果你只是想使用一个模块,而不是扩展它或者混合使用,那么你会想要使用require
。
奇怪的是,Ruby的require
与C的include
相似,而Ruby的include
则几乎不像C的include
。
从Metaprogramming Ruby书中,
require()
方法与load()
非常相似,但它的用途不同。 您使用load()
来执行代码,并使用require()
来导入库。
如果你使用一个模块,这意味着你将所有的方法带入你的课堂。 如果你用一个模块extend
一个类,这意味着你将模块的方法“引入” 类方法。 如果你用一个模块include
一个类,这意味着你将模块的方法“引入”为实例方法。
EX:
module A
def say
puts "this is module A"
end
end
class B
include A
end
class C
extend A
end
B.say
=>对于B:Class,未定义的方法'say'
B.new.say
=>这是模块A.
C.say
=>这是模块A.
C.new.say
=>未定义的方法'说'为C:类
上一篇: What is the difference between include and require in Ruby?