理解`load`,`require`和`require_relative`之间的区别
我不明白导入库或模块的三种方法之间的区别。 正如我目前所理解的那样,
load 'file.rb'
将外部文件的内容导入当前文件,而:
require 'file.rb'
将执行相同的function,但不会导入已导入的文件。
require_relative 'file.rb'
类似于require
,但它将加载仅在当前目录中的文件,而require
将使用搜索路径$:
以查找文件。 我毫不怀疑我对这三种机制的理解是有缺陷的。 有人可以提供一些澄清吗?
无论是否已导入文件,都要在导入文件时使用load
。 当您只想导入文件时,才使用require
或require_relative
。
由此可见,前者在导入文件是分析对象(数据文件)时使用,而后者用于提供程序中使用的某些function(程序,库,框架的一部分)。
虽然require
只能处理相对于$:
路径,但require_relative
也是一个可以处理相对于当前目录的路径的扩展。 require_relative
是require
的超集,并且require
可以被分配(尽管require_relative
是使用require
编写的,因此如果require
分配则require
重写)。