mla*_*nca 5 ruby syntax constants
我是Ruby的新手,对::运营商感到困惑.为什么以下代码输出2,3,4,5,1而不仅仅输出1?谢谢!
class C
a = 5
module M
a = 4
module N
a = 3
class D
a = 2
def show_a
a = 1
puts a
end
puts a
end
puts a
end
puts a
end
puts a
end
d = C::M::N::D.new
d.show_a
Run Code Online (Sandbox Code Playgroud)
如果你删除最后一行,你会看到你会得到5, 4, 3, 2.原因是类和模块的主体只是常规代码(与其他一些语言不同).因此,在解析类/模块时将执行这些print语句.
至于如何::工作 - 它只是让你在范围内移动.::A将参考A主要范围.只是在当前范围内A引用A.A::B将引用当前范围B内的A,即内部.
| 归档时间: |
|
| 查看次数: |
747 次 |
| 最近记录: |