ClassName< ::暗示在红宝石?

时间:2013-07-09 15:54:27

标签: ruby inheritance

我看到了这行代码。

class ClassName < ::TestUnit::Test::Etc

当嵌套常量标记遵循继承符号时,它是什么意思,如下所示:< ::SuperClass

此外,是否有::符号的技术名称?

1 个答案:

答案 0 :(得分:4)

::是范围解析运算符。这意味着“在此模块中查找以下常量名称”。如果省略该模块,则假定为Object。因此,::Foo基本上与Object::Foo相同,当然封闭模块可以定义其自己的 Object常量,在这种情况下,第二种形式会显示 Foo内的而不是您期望的那个Object

请注意,:: 也可以用作消息发送操作符,即与.相同:foo::bar与{{1}相同}}。但是,这种用法高度不鼓励。