10

What does the ::MyClass/MyModule scope operator do in Ruby, what is its purpose?

2 Answers 2

20

This explicitly refers to the MyClass in the global scope. If there is a MyClass in the global scope, but also a MyClass inside of SomeModule, referring to MyClass from inside of SomeModule will refer to MyClass inside of the module, not the global MyClass. Saying ::MyClass explicitly refers to the MyClass in the global scope.

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 
Sign up to request clarification or add additional context in comments.

Comments

3

"global scope" just means the constant is defined on the Object class. So ::SomeModule is shorthand for Object::SomeModule

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.