Что означает: (двойной двоеточие) в Ruby?

Что означает :: в Ruby? Например. Foo::Bar.

Ответ 1

Из Pickaxe:

Когда получатель явно указывается в вызове метода, его можно отделить от имени метода, используя либо период (.), либо два двоеточия (::). Единственное различие между этими двумя формами происходит, если имя метода начинается с буквы верхнего регистра. В этом случае Ruby предположит, что вызов метода receiver::Thing фактически является попыткой получить доступ к константе с именем Thing в приемнике, если в вызове метода нет списка параметров между круглыми скобками.

Ответ 2

Он называется оператором разрешения области. В принципе, причудливый способ ссылки на класс в пространстве имен. ActiveRecord - это пространство имен, а Base - это класс.

Ответ 3

Он обращается к константам в заданном классе или модуле. Например. ActiveRecord::Base - константа Base, определенная в модуле ActiveRecord.