What is this double-colon ::? E.g. Foo::Bar.
I found a definition:
The
::is a unary operator that allows: constants, instance methods and class methods defined within a class or module, to be accessed from anywhere outside the class or module.
What good is scope (private, protected) if you can just use :: to expose anything?
::is basically a namespace resolution operator. It allows you to access items in modules, or class-level items in classes. For example, say you had this setup:You could access
CONSTANTfrom outside the module asSomeModule::InnerModule::MyClass::CONSTANT.It doesn’t affect instance methods defined on a class, since you access those with a different syntax (the dot
.).Relevant note: If you want to go back to the top-level namespace, do this: ::SomeModule – Benjamin Oakes