include和require在Ruby中有什么区别?

我的问题类似于“在Ruby中包含和扩展有什么区别?”。

Ruby中的requireinclude什么区别? 如果我只是想在我的课程中使用模块中的方法,我是否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:类

链接地址: http://www.djcxy.com/p/58023.html

上一篇: What is the difference between include and require in Ruby?

下一篇: PHP difference in accessing class methods