:: MyClass Ruby作用域操作符有什么作用?

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

这明确指的是全局范围内的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简写