进一步来说:
::(比如::Foo::Bar)Foo::Bar)编辑:我在谈论这样的事情
module Foo
THING = 'thing'
module Bar
puts THING
end
end
#=> thing
module Foo::Bar
puts THING
end
#=> NameError: uninitialized constant Foo::Bar::THING
Run Code Online (Sandbox Code Playgroud)
你什么时候需要在范围前加上::(如:: Foo :: Bar)
当前名称空间中有另一个具有相同名称的常量时.
什么时候直接引用一个scoped const ok?(只是Foo :: Bar)
当前名称空间中没有其他具有相同名称的常量时.IE浏览器.当该标识符是明确的.同样,Bar如果它是明确的,你可以使用它来提高可读性.
这种行为是如此混乱有充分的理由吗?
它平衡可读性和易用性与特异性.::Foo::Bar::Baz::Boo当您深入到命名空间时,并不总是希望(全局唯一标识符).
| 归档时间: |
|
| 查看次数: |
514 次 |
| 最近记录: |