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

13 浏览
0 Comments

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

我的问题类似于“Ruby中include和extend的区别是什么?”。

在Ruby中,requireinclude的区别是什么?如果我只想在我的类中使用模块中的方法,我应该require它还是include它?

admin 更改状态以发布 2023年5月24日
0
0 Comments

如果你使用一个模块,那么你就把所有的方法引入到了你的类中。
如果你用一个模块extend一个类,那么这意味着你把这个模块的方法作为方法“引入了”进来。
如果你用一个模块include一个类,那么这意味着你把这个模块的方法作为实例方法“引入了”进来。

例如:

 module A
   def say
     puts "this is module A"
   end
 end
 class B
   include A
 end
 class C
   extend A
 end

B.say
=> B类没有'say'方法

B.new.say
=> 这是模块A

C.say
=> 这是模块A

C.new.say
=> C类没有'say'方法

0
0 Comments

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

答案:

include方法和require方法执行非常不同的操作。

require方法与其他大部分编程语言中的include方法相同:运行另一个文件。它还会追踪您之前所需的文件,不会重复要求。要运行另一个文件而不使用此附加功能,可以使用load方法。

include方法获取另一个模块中的所有方法并将它们包含到当前模块中。这是一种语言级别的事情,而不是与require相似的文件级别的事情。include方法是使用其他模块(通常称为混入)“扩展”类的主要方法。例如,如果您的类定义方法“each”,则可以包含mixin模块Enumerable并将其用作集合。这可能会令人困惑,因为其他语言中的include动词用法非常不同。

来源

因此,如果您只想使用模块而不是扩展它或执行混入,则应使用require

有趣的是,Ruby的 require 类似于C的 include ,而Ruby的 include 几乎与C的 include 无关。

0