2011-01-27 37 views
33

Tôi đã thấy rất nhiều việc sử dụng dấu hai chấm trong Rails trước tên lớp.Dấu hai chấm trước tên lớp trong Ruby?

Ví dụ:

require ::File.expand_path('../config/environment', __FILE__) 

Tôi biết những gì Module::Class::Constant phương tiện, nhưng ::Class?

Trả lời

52

Điều đó có nghĩa là bạn đang đề cập đến hằng số File từ không gian tên được mở rộng. Điều này có ý nghĩa trong các trường hợp như sau:

class MyClass #1 
end 

module MyNameSpace 
    class MyClass #2 
    end 

    def foo # Creates an instance of MyClass #1 
    ::MyClass.new # If I left out the ::, it would refer to 
        # MyNameSpace::MyClass instead. 
    end 
end 
Các vấn đề liên quan