What does the ::MyClass/MyModule
scope operator do in Ruby, what is its purpose?
Это явно относится к MyClass в глобальной области. Если в глобальной области есть MyClass, а также MyClass внутри SomeModule, ссылка на MyClass внутри SomeModule будет ссылаться на MyClass внутри модуля, а не на глобальный MyClass. Выражение ::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