Подтвердить что ты не робот

Двойные двоеточия перед именами классов в Ruby?

Я видел много использования двойных двоеточий в Rails перед именами классов.

Например:

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

Я знаю, что означает Module::Class::Constant, но ::Class?

4b9b3361

Ответ 1

Это означает, что вы ссылаетесь на константу File в пространстве имен toplevel. Это имеет смысл в таких ситуациях:

class MyClass #1
end

module MyNameSpace
  class MyClass #2
  end

  def foo # Creates an instance of MyClass #1
    ::MyClass.new # If I left out the ::, it would refer to
                  # MyNameSpace::MyClass instead.
  end
end