3

为什么在某些情况下,需要在 ruby​​ 中使用 File 类的文件前面带有一个空白命名空间,如config.ru的以下代码

require ::File.expand_path('../config/environment',  __FILE__)

而在其他地方则没有:

require File.expand_path('../../config/boot',  __FILE__)

谢谢

4

1 回答 1

4

显式指定的范围解析运算符(如在第一步中)确保 File 类将从全局命名空间加载。

如果一个模块在其命名空间中重新定义了 File 类,则第二个版本将选择该类而不是全局类。

在大多数情况下,可以放心地忽略这一点,即使未定义范围解析运算符,您也可以假设您的类正在由全局命名空间加载

于 2012-09-26T18:46:55.630 回答