(初学者 Julia)基本的 while 循环在 Juno 中不会 运行,但在 Jupyter 中不会 运行s

(Beginner Julia) Basic while loop won't run in Juno, but runs in Jupyter

我今天早上安装了 JuliaPro 1.4.1-1 并打开了一些初级 Julia 教程。

下面的代码 运行 在 Jupyter Notebook 中是完美的,但是当我在 Juno 中 运行 它时给出一个 UndefVarError ,无论我是在 REPL 中还是作为 . jl文件。

n = 0
while n < 4
    n += 1
    println(n)
end

当我 运行 它作为 .jl 时,错误消息显示为:

Error evaluating firsttest.jl

LoadError: UndefVarError: n not defined
in expression starting at C:\Users\Lipkin Hollow\JuliaPro-1.4.1-1\firsttest.jl:2
top-level scope at firsttest.jl:3

当我在 REPL 中 运行 时,错误显示为:

ERROR: UndefVarError: n not defined
Stacktrace:
 [1] top-level scope at .\none:3

如有任何帮助,我们将不胜感激!

您已 运行 了解 Julia 中的当前范围规则:循环引入了它们自己的范围,因此您无法从循环内访问全局变量。相关文档是here

IJulia 目前使用一个名为 SoftGlobalScope.jl 的包来更改此范围行为,因为它被证明是 Julia 1.0 版中引入的更具争议的更改之一。这就是 IJulia/Jupyter Notebooks 和其他设置(即 REPL 和 Juno)当前行为不同的原因。

请注意,此行为将在 Julia 1.5 版中再次更改,这将使 REPL 中的行为与您现在在 Jupyter 中看到的行为一致。可在 here 中找到有关此的公告。

但一般来说,出于性能原因,强烈建议不要在 Julia 中使用全局变量,您应该在函数中组织代码以充分利用 Julia!