为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

潇潇雨雨 2019-09-27 16:46:32
我的问题类似于“ 在Ruby中包含和扩展之间有什么区别? ”。require和includeRuby有什么区别?如果我只想使用我班上某个模块中的方法,应该require还是include应该?
查看完整描述

3 回答

?
精慕HU

TA贡献1845条经验 获得超8个赞

Ruby中的“ include”和“ require”有什么区别?


回答:


include和require方法的作用截然不同。


require方法可以完成大多数其他编程语言所包含的功能:运行另一个文件。它还会跟踪您过去所需的内容,并且不需要两次相同的文件。要运行没有此附加功能的另一个文件,可以使用load方法。


include方法将从另一个模块中获取所有方法,并将它们包括到当前模块中。与require相比,这是语言级别的事情,而不是文件级别的事情。include方法是使用其他模块(通常称为混合)“扩展”类的主要方法。例如,如果您的类定义了方法“ each”,则可以包括mixin模块Enumerable,并且它可以充当集合。由于include动词在其他语言中的用法非常不同,因此可能会造成混淆。


资源


因此,如果您只想使用模块,而不是扩展它或进行混入,那么您将要使用require。


奇怪的是,Ruby的require类似于C中的include,而Ruby的include是几乎没有像C的include。


查看完整回答
反对 回复 2019-09-27
?
当年话下

TA贡献1890条经验 获得超9个赞

从元编程Ruby书中,


该require()方法与十分相似load(),但是其目的不同。您用于load()执行代码,并 require()用于导入库。


查看完整回答
反对 回复 2019-09-27
?
炎炎设计

TA贡献1808条经验 获得超4个赞

如果使用模块,则意味着将所有方法都带入类中。如果您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:Class的未定义方法“ say”


查看完整回答
反对 回复 2019-09-27
  • 3 回答
  • 0 关注
  • 1040 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信