我有一段代码在循环之外工作,但在循环中失败。
请参见:
julia> margin = 1
1
julia> rat = [-0.3 ; -0.8]
2-element Array{Float64,1}:
-0.3
-0.8
julia> beta = 0
0
julia> for q=1:2
if rat[q] - margin > beta
beta = rat[q] - margin
end
end
ERROR: UndefVarError: beta not defined
Stacktrace:
[1] top-level scope at ./REPL[803]:2 [inlined]
[2] top-level scope at ./none:0
julia> q=1
1
julia> if rat[q] - margin > beta
beta = rat[q] - margin
end
julia> q=2
2
julia> if rat[q] - margin > beta
beta = rat[q] - margin
end有人能解释这个错误(" error : UndefVarError: beta未定义“)吗?
(我有Julia v"1.1.1",在Mac OSX上)
发布于 2019-06-27 11:36:20
在变量之前添加global对我有用:
for q=1:2
if (rat[q] - margin) > beta
global beta = rat[q] - margin
end
end发布于 2019-06-27 11:43:57
朱莉娅有一种非常特殊的处理全球范围的方法。变量范围的规则可以在这里阅读:https://docs.julialang.org/en/v1/manual/variables-and-scoping/#Global-Scope-1。在Julia-1.0中引入了新的范围规则,它们在社区中引起了很大争议,特别是因为在全局范围中for循环的不直观行为。对于那些非常感兴趣的人,这里有一个关于利弊的讨论:
https://stackoverflow.com/questions/56789914
复制相似问题