为什么在某些情况下,需要在ruby中使用File类的文件前面有一个空白的命名空间,如下面的代码 config.ru
require ::File.expand_path('../config/environment', __FILE__)
在其他地方没有:
require File.expand_path('../../config/boot', __FILE__)
由于
答案 0 :(得分:4)
显式指定的范围解析运算符(如步骤1中所示)确保将从全局命名空间加载File类。
如果模块在其命名空间中重新定义了File类,则第二个版本将在全局范围内选择该类。
在大多数情况下,可以安全地忽略这一点,即使未定义范围解析运算符,您也可以假设您的类正由全局命名空间加载