:: 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
类中定义。 所以::SomeModule
是Object::SomeModule
简写