2010-08-30 16 views

Respuesta

18

Esto se refiere explícitamente a MyClass en el ámbito global. Si hay una MyClass en el alcance global, pero también una MyClass dentro de SomeModule, consultar MyClass desde SomeModule hará referencia a MyClass dentro del módulo, no a la MyClass global. Diciendo :: MyClass se refiere explícitamente a MyClass en el alcance global.

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

"alcance global" solo significa que la constante se define en la clase Object. Entonces ::SomeModule es la abreviatura de Object::SomeModule