为了账号安全,请及时绑定邮箱和手机立即绑定

什么是Ruby的双冒号:‘?

什么是Ruby的双冒号:‘?

波斯汪 2019-07-11 13:33:28
什么是Ruby的双冒号:‘?这个双冒号是什么?::?例如:Foo::Bar.我找到了一个定义:这个::是一个一元运算符,它允许从类或模块之外的任何地方访问定义在类或模块中的常量、实例方法和类方法。范围(私有的,受保护的)有什么好处?::揭露什么吗?
查看完整描述

3 回答

?
慕村9548890

TA贡献1884条经验 获得超4个赞

::基本上是一个名称空间解析操作符。它允许您访问模块中的项,或类中的类级项.例如,假设您有这样的设置:

module SomeModule
    module InnerModule
        class MyClass
            CONSTANT = 4
        end
    endend

你可以CONSTANT从模块外部SomeModule::InnerModule::MyClass::CONSTANT.

它不会影响在类上定义的实例方法,因为您可以访问具有不同语法的实例方法(点).).

相关注意:如果要返回顶级命名空间,请执行以下操作:SomeModule-本杰明·奥克斯


查看完整回答
反对 回复 2019-07-11
?
慕慕森

TA贡献1856条经验 获得超17个赞

::允许您访问在另一个类或模块中定义的常量、模块或类。它用于提供名称空间,以便方法和类名不会与不同作者的其他类发生冲突。

当你看到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

这个::运算符不允许您绕过标记为私有或受保护的方法的可见性。


查看完整回答
反对 回复 2019-07-11
  • 3 回答
  • 0 关注
  • 984 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信