Jul*_*ner 11 scope global-variables julia
在julia 1.0.0中,我得到以下for循环作用域行为:
julia> counts = 0
0
julia> for i in 1:10
counts += 1
end
ERROR: UndefVarError: counts not defined
Run Code Online (Sandbox Code Playgroud)
我发现解决方案是在循环中创建counts变量.globalfor
julia> for i in 1:10
global counts += 1
end
julia> counts
10
Run Code Online (Sandbox Code Playgroud)
然而,作为朱莉娅的新手,这种行为几乎让我退出了语言,因为它似乎与其他语言有很大不同.
现在我看到了上面的解决方案,我想知道这对于开始julia用户是否直观.这对我来说并不直观,尽管我终于能够在很长一段时间后解决它.
这是令人困惑的部分.我认为在初始化时创建变量global会解决问题.它不是:
julia> global c = 0
julia> for i in 1:10
c += 1
end
ERROR: UndefVarError: c not defined
Run Code Online (Sandbox Code Playgroud)
c上面的全局范围会流入for循环似乎很自然,但for循环的第一次初始化c显然会创建一个不同的for循环局部c.
这对经验丰富的julia开发者有意义吗?
crs*_*nbr 13
我认为有一致认为,对于交互式使用,这种行为并不是最优的,很可能会很快改变到REPL中的预期行为,IJulia等.你可以在这里找到讨论:https://github.com/JuliaLang/julia/issues/28789
但请注意,一旦将其包装到本地范围(例如函数或let块)中,一切都按预期工作.
请参阅我的答案:Julia中的变量范围,以获取更多信息/参考资料.
| 归档时间: |
|
| 查看次数: |
738 次 |
| 最近记录: |