Что делает оператор области ::MyClass/MyModule
в Ruby, какова его цель?
Что делает оператор MyClass Ruby scope?
Ответ 1
Это явно относится к 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
Ответ 2
"глобальная область видимости" означает, что константа определена в классе Object
. Итак, ::SomeModule
является сокращением для Object::SomeModule