我正在阅读Ruby项目的源代码。如果有一个名为a.rb的文件。我看到有人要求它:
require 'a'
但有人这样做:
require 'a.rb'
这些是一样的吗?
答案 0 :(得分:4)
require 'a.rb'
仅搜索a.rb
,而require 'a'
也搜索a.rb
,a.so
,...
根据Kernel#require
documentation:
如果文件名的扩展名为“.rb”,则将其作为源加载 文件;如果扩展名为“.so”,“。o”或“.dll”,则为默认值 在当前平台上共享库扩展,Ruby加载 共享库作为Ruby扩展。否则,Ruby会尝试添加 “.rb”,“。so”等等,直到找到名称。如果文件名为 无法找到,将引发LoadError。