::MyClass/MyModule
范围操作符在Ruby中做了什么,它的目的是什么?
答案 0 :(得分:18)
这明确指的是全局范围内的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
答案 1 :(得分:2)
“全局范围”仅表示常量在Object
类上定义。因此::SomeModule
是Object::SomeModule