什么::(双冒号)在Ruby中意味着什么?

什么在Ruby中意味着什么? 例如Foo::Bar

来自镐 :

当在方法调用中显式指定接收器时,可以使用句点( . )或两个冒号( :: :)将其与方法名称分开。 如果方法名称以大写字母开头,则会出现这两种forms之间的唯一区别。 在这种情况下,Ruby将假设receiver::Thing方法调用实际上是尝试访问接收器中名为Thing的常量,除非方法调用在括号之间有参数列表。

它被称为范围解析运算符。 基本上是一种在命名空间中引用类的奇特方式。 ActiveRecord是命名空间,Base是类。

它访问给定类或模块中的常量。 例如, ActiveRecord::Base是在ActiveRecord模块中定义的常量Base