了解Ruby中的命名空间

shi*_*kui 3 ruby

在下面的代码中:

::Trace.tracer = ::Trace::ZipkinTracer.new()
Run Code Online (Sandbox Code Playgroud)

Trace和之间有什么关系ZipkinTracer

Mar*_*pka 8

ZipkinTracerTrace命名空间内,如下所示:

module Trace
  class ZipkinTracer
  # ...
  end
end
Run Code Online (Sandbox Code Playgroud)

::之前不断名字的意思是,你指向的根源.例如,在以下代码中:

class Class1
end

module Module1
  class Class1
  end

  def foo
    ::Class1
  end
end
Run Code Online (Sandbox Code Playgroud)

::Class1确保您引用"root" Class1.如果你有:

def foo
  Class1
end
Run Code Online (Sandbox Code Playgroud)

Module1::Class1将被称为.