ruby中类名之前的:: sign /运算符是什么?

Aut*_*act 5 ruby namespaces module class

在ruby中,::命名空间模块和类.但我经常看到::在类名的开头,如下所示:

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

那个::在它的开头是什么意思?

ein*_*nus 16

它是针对全球范围而不是本地范围来解决的.

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
Run Code Online (Sandbox Code Playgroud)

版画

false
true
Run Code Online (Sandbox Code Playgroud)