猿问

什么是Ruby的双冒号:‘?

什么是Ruby的双冒号:‘?

这个双冒号是什么?::?例如:Foo::Bar.

我找到了一个定义:

这个::是一个一元运算符,它允许从类或模块之外的任何地方访问定义在类或模块中的常量、实例方法和类方法。

范围(私有的,受保护的)有什么好处?::揭露什么吗?


波斯汪
浏览 985回答 3
3回答

慕村9548890

::基本上是一个名称空间解析操作符。它允许您访问模块中的项,或类中的类级项.例如,假设您有这样的设置:module SomeModule     module InnerModule         class MyClass             CONSTANT = 4         end     endend你可以CONSTANT从模块外部SomeModule::InnerModule::MyClass::CONSTANT.它不会影响在类上定义的实例方法,因为您可以访问具有不同语法的实例方法(点).).相关注意:如果要返回顶级命名空间,请执行以下操作:SomeModule-本杰明·奥克斯

慕慕森

::允许您访问在另一个类或模块中定义的常量、模块或类。它用于提供名称空间,以便方法和类名不会与不同作者的其他类发生冲突。当你看到ActiveRecord::Base在Rails中,它意味着Rails有类似的module ActiveRecord   class Base   endend即称为Base模块内部ActiveRecord然后被引用为ActiveRecord::Base(您可以在activerecord-N.N/lib/Active_Record/base.rb中的Rails源代码中找到这一点):的一种常见用法是访问模块中定义的常量。module Math   PI = 3.141 # ...endputs Math::PI这个::运算符不允许您绕过标记为私有或受保护的方法的可见性。
随时随地看视频慕课网APP

相关分类

Ruby
我要回答