gpt4 book ai didi

scope - 封装在函数中的全局变量

转载 作者:行者123 更新时间:2023-12-04 10:58:28 24 4
gpt4 key购买 nike

我正在学习 Julia 作为我经济学博士学位的一部分,但我遇到了一个对我来说没有意义的问题。我正在尝试编写一个函数来执行一些初步计算,然后进行一个 while 循环并返回一些值。我想在不使用全局变量的情况下做到这一点。出于某种原因,我无法让它工作。请参阅下面的最小工作示例,它返回 z 的 undefined variable 错误。 .

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

如果这个问题微不足道,我深表歉意。任何帮助都非常感谢。谢谢。

最佳答案

只需放一个 local z或者 z = 0在你的 while 循环之前,这样 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?

关于scope - 封装在函数中的全局变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59015383/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com