What does :: do?

前端 未结 5 1701
南旧
南旧 2020-12-16 23:18

I have some inherited code that I am modifying. However, I am seeing something strange(to me).

I see some code like this:

::User.find_by_email(params         


        
5条回答
  •  孤街浪徒
    2020-12-16 23:46

    :: is a scope resolution operator, it effectively means "in the namespace", so ActiveRecord::Base means "Base, in the namespace of ActiveRecord"

    A constant being resolved outside of any namespace means exactly what it sounds like - a constant not in any namespace at all.

    It's used in places where code may be ambiguous without it:

    module Document
      class Table # Represents a data table
    
        def setup
          Table # Refers to the Document::Table class
          ::Table # Refers to the furniture class
        end
    
      end
    end
    
    class Table # Represents furniture
    end
    

提交回复
热议问题