该脚本非常简单,它存储在一个名为 001.jl 的文件中
sum = 0
for i in 1:10-1
if i%3 == 0 || i%5 == 0
sum = sum + i
end
end
println("The sum is ", sum)
然而,当我尝试在控制台中运行它时,我得到了这个错误
ERROR: LoadError: UndefVarError: sum not defined
Stacktrace:
[1] top-level scope at /Users/aceves/Documents/MyScripts/julia/001.jl:5 [inlined]
[2] top-level scope at ./none:0
[3] include at ./boot.jl:317 [inlined]
[4] include_relative(::Module, ::String) at ./loading.jl:1044
[5] include(::Module, ::String) at ./sysimg.jl:29
[6] include(::String) at ./client.jl:392
[7] top-level scope at none:0
in expression starting at /Users/aceves/Documents/MyScripts/julia/001.jl:3
虽然与朱莉娅 0.6 完美匹配。如果我在 1.0.2 版本的 REPL 中输入完全相同的话,它也可以工作。我显然错过了一个细节。有没有人知道哪个?
1 回答
就像在评论中所说的那样,问题在于 Julia 1.0 的范围变化。应该注意的是,在许多这样的例子中,最简单和最快速的解决方案是在一个
let
块中包含所有代码。let
块引入了一个本地范围: