ruby - 了解 `load` 、 `require` 和 `require_relative` 之间的区别

标签 ruby

我不明白导入库或模块的三种方法之间的区别。据我目前的了解,

load 'file.rb'

会将外部文件的内容导入当前文件而:

require 'file.rb'

将执行相同的功能,但不会导入已经导入的文件。

require_relative 'file.rb'

类似于 require,但它将加载仅在当前目录中的文件,而 require 将使用搜索路径 $: 试图找到该文件。我毫不怀疑我对这三种机制的理解是有缺陷的。谁能提供一些说明?

最佳答案

load 在您想要导入文件时使用,无论它是否已经导入。 requirerequire_relative 仅当您想要导入尚未导入的文件时使用。

由此可知,前者在导入文件为分析对象(数据文件)时使用,而后者则用于提供程序中要使用的一些特性(部分程序、库、框架)。

虽然 require 只能处理相对于 $: 的路径,但 require_relative 是一个扩展,它也可以处理相对于当前目录的路径。 require_relativerequire的超集,require可以省掉(虽然require_relative是用require写的,所以如果要分发 require 就必须重写)。

关于ruby - 了解 `load` 、 `require` 和 `require_relative` 之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34407955/

相关文章:

ruby-on-rails - Ruby/Rails 线程安全

ruby - 使用 Ruby 从命令行参数中提取文件名

ruby-on-rails - 在 Heroku 上运行 ruby​​ 1.9.2

ruby-on-rails - 没有 RVM 的两个不同的 ruby​​ 版本

ruby-on-rails - 在 rails 中处理 STI 子类路由的最佳实践

ruby-on-rails - Hirb - "Too many fields.."仅当从 irbrc 加载时(不直接在控制台中)

mysql - 为什么我安装 mysql gem 时会出现此错误?

ruby-on-rails - 在模型中使用 Rails 助手

ruby - 为什么不在 here-doc 作品中屏蔽参数?

ruby - 在 Ruby 中实现二叉树