Что такое оператор :: sign / перед именем класса в ruby? - PullRequest
5 голосов
/ 08 сентября 2010

в ruby, :: namespaces модуль и класс. Но я часто вижу в начале имени класса следующее:

#snippet of gollum gem
def page_class
  @page_class ||
    if superclass.respond_to?(:page_class)
      superclass.page_class
    else
      ::Gollum::Page
    end
end

Что это означает, если это в начале?

1 Ответ

16 голосов
/ 08 сентября 2010

Это для разрешения глобальной области вместо локальной.

class A
  def self.global? 
    true 
  end
end

module B

  class A
    def self.global?
     false
    end
  end

  def self.a
    puts A.global?
    puts ::A.global?

  end
end

B::a

отпечатки

false
true
...