Двойные двоеточия перед именами классов в Ruby? - PullRequest
35 голосов
/ 27 января 2011

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

Например:

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

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

1 Ответ

64 голосов
/ 27 января 2011

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

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...