在Quantitative Economics course中,我遇到了以下示例:
ϵ = randn(1:100)
ϵ_sum = 0.0
m = 5
for ϵ_val in ϵ[1:m]
ϵ_sum = ϵ_sum + ϵ_val
end
ϵ_mean = ϵ_sum / m
即使在代码的第一行中定义了ϵ_sum,代码也会发出错误ERROR: UndefVarError: ϵ_sum not defined
。经过一番痛苦的互联网浏览后,假设是for loop has weird local completely isolated scope。这似乎是事实,因为我一直试图从matlab移植的类似代码在julia中存在怪异的问题,尤其是代码在循环中增长数组和变量的情况。
但是for循环中局部作用域的假设被放弃了,因为下面的代码运行没有问题:
e = 1
for num in 1:100
println(e)
end
这两段代码的作用域有什么区别?