我在经济学博士学位中学习Julia,但是遇到了一个对我来说没有意义的问题。我正在尝试编写一个函数,该函数执行一些初步计算,然后执行while循环并返回一些值。我想这样做而不使用全局变量。由于某种原因,我无法使其正常工作。请参阅下面的最小工作示例,该示例为z
返回未定义的变量错误。
function test_me(n)
x = 2 + 1
y = x - 1
i = y
while i <= n
println(i)
i += 1
z = 3*i
end
return z
end
通过将z
设置为全局变量,可以轻松解决问题。
function test_me2(n)
x = 2 + 1
y = x - 1
i = y
while i <= n
println(i)
i += 1
global z = 3*i
end
return z
end
我感到很困惑,因为我印象深刻的是,将while循环包装在函数中意味着z
在本地范围内,而不需要全局声明。例如,下面的代码按预期工作。
function test_me3(n)
i = 1
while i <= n
println(i)
i += 1
z = 3*i
end
return z
end
对于这个问题不重要,我深表歉意。任何帮助都非常感谢。谢谢。
答案 0 :(得分:2)
只需在您的while循环之前放置一个local z
或另一个z = 0
,以便在循环中定义z
。
有关更多信息,请查看scoping page of the Julia documentation和local
keyword docstring。
另请参阅以下问题/答案:In Julia, is there a way to pass a variable from a local scope to the enclosing local scope?