:: MyClass Ruby scope operator是做什么的?

在Ruby中, ::MyClass/MyModule作用域操作符是做什么的,它的目的是什么?


这明确引用了全局范围中的MyClass。 如果全局范围内有MyClass,而且SomeModule内部还有MyClass,则引用SomeModule内部的MyClass将引用模块内部的MyClass,而不是全局MyClass。 Saying :: MyClass明确引用全局范围中的MyClass。

class MyClass
  def self.something
    puts "Global MyClass"
  end
end

module SomeModule
  class MyClass
    def self.something
      puts "SomeModule::MyClass"
    end
  end

  print "From the module: "
  MyClass.something

  print "Explicitly using global scope: "
  ::MyClass.something
end

print "From the global scope: "
MyClass.something

print "Explicitly using module scope: "
SomeModule::MyClass.something

“全局范围”仅仅意味着常量在Object类中定义。 所以::SomeModuleObject::SomeModule简写

链接地址: http://www.djcxy.com/p/59151.html

上一篇: What does ::MyClass Ruby scope operator do?

下一篇: What does :: (double colon) mean in Ruby?