<分区>
我知道双冒号 (::) 基本上是一个 namespace 解析运算符。但在这种特殊情况下,我不确定我在哪个范围内工作。这是否意味着我想要来自 ruby 核心的 MyClass 类?有点像 ~ 表示 bash 中的主目录..
<分区>
我知道双冒号 (::) 基本上是一个 namespace 解析运算符。但在这种特殊情况下,我不确定我在哪个范围内工作。这是否意味着我想要来自 ruby 核心的 MyClass 类?有点像 ~ 表示 bash 中的主目录..
最佳答案
想象一下下面的代码:
class A
def a
puts 'TOPMOST'
end
end
module B
class A
def a
puts 'NESTED'
end
end
def self.topmost
::A.new.a
end
def self.nested
A.new.a
end
end
B.topmost
将打印 "TOPMOST"
,而 B.nested
将打印 "NESTED"
。
因此,::A
的意思不是“来自 ruby 核心”,而是“来自无模块”。
关于Ruby 作用域:MyClass.new 和::MyClass.new 之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31520262/
相关文章:
php - 使用 Assetic PHP 安装 RVM 后 Sass 损坏
ruby - 回声abc | ruby -p -e "sub(' a' ,'A' ).sub ('b' , 'B' )": why not "ABc”?
ruby-on-rails - 使用 RSpec 测试用户身份验证
variables - 在创建 lambda 时捕获变量的值
javascript - 在express中传递额外参数 - Node.JS
javascript - 使用从函数返回的字符串选择预定义变量
ruby-on-rails - 不正确的 deploy.rb - "NoMethodError: undefined method ` tail' for nil :NilClass"