使用 for 循环在 julia 1.0.0 中确定范围对初学者有意义吗?



在 julia 1.0.0 中,我得到以下 for 循环作用域行为:

julia> counts = 0
0
julia> for i in 1:10
counts += 1
end
ERROR: UndefVarError: counts not defined

我发现解决方案是使counts变量globalfor循环。

julia> for i in 1:10
global counts += 1
end
julia> counts
10

然而,作为 julia 的新手,这种行为几乎让我放弃了这门语言,因为它看起来与其他语言非常不同。

现在我看到了上面的解决方案,我想知道这对初学者 julia 用户来说是否直观。 这对我来说并不直观,尽管经过相当长的时间我终于能够解决它。

这是令人困惑的部分。 我认为在初始化时使变量全局化可以解决问题。 它不会:

julia> global c = 0
julia> for i in 1:10
c += 1
end
ERROR: UndefVarError: c not defined

上述c的全局范围会向入 for 循环似乎是很自然的,但是 for 循环中c的第一次初始化显然会创建一个不同的 for 循环本地c

这对经验丰富的 Julia 开发人员有意义吗?

我认为人们一致认为,对于交互式使用,这种行为不是最佳的,它可能会很快更改为 REPL、IJulia 等中的预期行为。您可以在此处找到讨论:https://github.com/JuliaLang/julia/issues/28789

但是请注意,一旦将其包装到本地范围(例如函数或let块(中,一切都会按预期工作。

请参阅我的答案:Julia 中的变量范围以获取更多信息/参考。

相关内容

  • 没有找到相关文章

最新更新