首页 文章

我无法使用 julia 1.0.2 在控制台中运行.jl 文件,但我可以使用 julia 0.6

提问于
浏览
1

该脚本非常简单,它存储在一个名为 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 回答

  • 1

    就像在评论中所说的那样,问题在于 Julia 1.0 的范围变化。应该注意的是,在许多这样的例子中,最简单和最快速的解决方案是在一个let块中包含所有代码。 let块引入了一个本地范围:

    let    
        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)    
    end
    

相关问题