2010-08-30 75 views

回答

18

這明確引用了全局範圍內的MyClass。如果全局範圍內有MyClass,而且SomeModule內部還有MyClass,則引用SomeModule內部的MyClass將引用模塊內部的MyClass,而不是全局MyClass。 Saying :: 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類中定義的常量。所以::SomeModuleObject::SomeModule

的簡寫