2

我看到了这行代码。

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

当嵌套常量标记跟在继承符号之后是什么意思,像这样:< ::SuperClass

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

4

1 回答 1

4

::是范围解析运算符。它的意思是“在这个模块中查找以下常量名”。如果省略模块,则假定为Object. 因此,除了封闭模块可以定义自己的::Foo常量之外,基本相同,在这种情况下,第二种形式会在其中查找而不是您期望的那种。Object::Foo ObjectFoo Object

注意,::可以作为消息发送操作符,即方式同.foo::barfoo.bar但是,强烈建议不要使用这种用法。

于 2013-07-09T15:59:50.533 回答