我不明白导入库或模块的三种方法之间的区别。据我目前的了解,
load 'file.rb'
会将外部文件的内容导入当前文件而:
require 'file.rb'
将执行相同的功能,但不会导入已经导入的文件。
require_relative 'file.rb'
类似于 require
,但它将加载仅在当前目录中的文件,而 require
将使用搜索路径 $:
试图找到该文件。我毫不怀疑我对这三种机制的理解是有缺陷的。谁能提供一些说明?
最佳答案
load
在您想要导入文件时使用,无论它是否已经导入。 require
或 require_relative
仅当您想要导入尚未导入的文件时使用。
由此可知,前者在导入文件为分析对象(数据文件)时使用,而后者则用于提供程序中要使用的一些特性(部分程序、库、框架)。
虽然 require
只能处理相对于 $:
的路径,但 require_relative
是一个扩展,它也可以处理相对于当前目录的路径。 require_relative
是require
的超集,require
可以省掉(虽然require_relative
是用require写的
,所以如果要分发 require
就必须重写)。
关于ruby - 了解 `load` 、 `require` 和 `require_relative` 之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34407955/