3

場合によっては、ルビーで File クラスを使用してファイルを要求すると、config.ruの次のコードのように空白の名前空間が先頭に追加されるのはなぜですか

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

他の場所にはありません:

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

ありがとう

4

1 に答える 1

4

(ステップ 1 のように) 明示的に指定されたスコープ解決演算子は、File クラスがグローバル名前空間からロードされることを保証します。

モジュールがその名前空間で File クラスを再定義した場合、2 番目のバージョンはグローバルなものよりもそれを選択します。

ほとんどの場合、これは安全に無視でき、スコープ解決演算子が定義されていない場合でも、クラスがグローバル名前空間によってロードされていると想定できます。

于 2012-09-26T18:46:55.630 に答える