Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Loops (初学者茱莉亚)基本while loop赢了';我不是在朱诺跑,而是在朱比特跑_Loops_While Loop_Jupyter Notebook_Julia_Juno Ide - Fatal编程技术网

Loops (初学者茱莉亚)基本while loop赢了';我不是在朱诺跑,而是在朱比特跑

Loops (初学者茱莉亚)基本while loop赢了';我不是在朱诺跑,而是在朱比特跑,loops,while-loop,jupyter-notebook,julia,juno-ide,Loops,While Loop,Jupyter Notebook,Julia,Juno Ide,今天早上我安装了JuliaPro 1.4.1-1,并打开了一些初学者Julia教程 下面的代码在Jupyter笔记本中运行得非常完美,但在Juno中运行时,无论是在REPL中运行还是作为.jl文件运行,都会出现一个UndervarError n = 0 while n < 4 n += 1 println(n) end 在REPL中运行时,错误如下: ERROR: UndefVarError: n not defined Stacktrace: [1] top-leve

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

下面的代码在Jupyter笔记本中运行得非常完美,但在Juno中运行时,无论是在REPL中运行还是作为.jl文件运行,都会出现一个UndervarError

n = 0
while n < 4
    n += 1
    println(n)
end
在REPL中运行时,错误如下:

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

任何帮助都将不胜感激

您在Julia中遇到了当前的作用域规则:循环引入了自己的作用域,因此无法从循环中访问全局变量。相关文件如下:

IJulia目前使用一个名为的包来改变这种范围行为,因为这是Julia 1.0版中引入的一个更具争议性的更改。这就是为什么IJulia/Jupyter笔记本电脑和其他设置(即REPL和Juno)的行为目前有所不同

请注意,在Julia版本1.5中,这种行为将再次发生变化,这将使REPL的行为与您现在在Jupyter中看到的一致。有关这方面的公告,请参见


但一般来说,由于性能原因,强烈反对在Julia中使用全局变量,您应该在函数中组织代码,以充分利用Julia

谢谢!这很有帮助。那么,您将如何在Juno中执行while循环呢?您有不同的选择:(1)将所有内容包装到函数
main()[此处的代码]end
并调用
main()
,或者(2)将循环中的变量
n
注释为
global n
,或者(3)使用Julia 1.5(我认为目前需要从源代码构建,可能不建议初学者使用!)谢谢。使用main()有效。但我还没有完全得到全局声明。当我使用与问题中相同的代码时,除了“全局n=0”而不是“n=0”,它仍然给我一个未定义的错误。很抱歉,我只是想了解Julia在做什么,来自Python/R背景。很抱歉,我在前面的评论中不清楚-您需要将循环变量注释为全局变量,即在循环中
global n+=1
n=0
自动创建全局变量ble(当您在全局范围内执行赋值时),您知道需要让循环知道它应该在该全局范围内查找
n
,而不是在它自己的局部范围内(默认情况下是这样的)。Python是不同的,因为循环没有自己的范围(这就是为什么如果您在范围(5)内为i查找
在Python中,你有
i=4
之后在循环外浮动,在Julia中
i
将是未定义的)这很有意义,完美地回答了我的问题。我现在可以重现它。非常感谢。
ERROR: UndefVarError: n not defined
Stacktrace:
 [1] top-level scope at .\none:3