1

我正在阅读一个 Ruby 项目的源代码。如果有一个名为 a.rb 的文件。我看到有人要求它:

require 'a'

但有人这样做:

require 'a.rb'

这些是一样的吗?

4

1 回答 1

4

require 'a.rb'只搜索a.rb, 同时require 'a'也搜索a.rb, a.so, ...


根据Kernel#require文件

如果文件名具有扩展名“.rb”,则作为源文件加载;如果扩展名是“.so”、“.o”或“.dll”,或者是当前平台上的默认共享库扩展名,Ruby 会将共享库作为 Ruby 扩展名加载。否则,Ruby 会尝试在名称中添加“.rb”、“.so”等,直到找到为止。如果找不到名为的文件,则会引发 LoadError。

于 2013-10-29T08:39:15.577 回答