我将从 Julia 0.7 升级到 1.0。看来 Julia 对变量范围的规则从 0.7 更改为 1.0。例如,我想运行一个像这样的简单循环:
num = 0
for i = 1:5
if i == 3
num = num + 1
end
end
print(num)
在 Julia 0.7 中(以及大多数其他语言),我们可以期望num = 1
循环之后。然而,这会招致UndefVarError: num not defined
在朱莉娅 1.0 中。我知道通过使用let
我可以做这个
let
num = 0
for i = 1:5
if i == 3
num = num + 1
end
end
print(num)
end
它将打印出 1。但我确实想要得到num = 1
循环外和let
堵塞。一些答案建议将所有代码放在let
块,但它会带来其他问题,包括UndefVarError
同时逐行测试。有什么方法可以代替使用let
阻塞?谢谢!
这是讨论的here.
Add global
如下所示在循环内num
多变的。
num = 0
for i = 1:5
if i == 3
global num = num + 1
end
end
print(num)
在 Julia 1.0.0 REPL 中运行:
julia> num = 0
0
julia> for i = 1:5
if i == 3
global num = num + 1
end
end
julia> print(num)
1
Edit
对于刚刚接触 Julia 的人来说,应该注意 vasja 在下面的答案中所做的精彩评论:
请记住,在函数内部您不会使用全局,因为函数内部的作用域规则如您所期望的那样:
请参阅该答案,了解对相同代码使用函数而不会出现范围问题的好示例。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)