gpt4 book ai didi

variables - Julia :变量未定义

转载 作者:行者123 更新时间:2023-12-02 22:14:54 27 4
gpt4 key购买 nike

变量作用域的行为看起来很奇怪。代码块

tp = 1
function test2()
println(tp)
end

工作得很好,同时

function test()
if tp==0
tp=tp-1
end
end

给出异常“tp 未定义”。怎么了?

最佳答案

这很棘手,因为变量被隐式定义为局部或全局变量,并且函数中稍后的定义可能会影响它们在整个函数中的作用域。

在第一种情况下,tp 默认为全局变量,并且它按您的预期工作。然而,在第二种情况下,您分配tp。正如 scope of variables section 中所述。手册内容:

"An assignment x = y introduces a new local variable x only if x is neither declared global nor introduced as local by any enclosing scope before or after the current line of code."

因此,通过分配给tp,您已经隐式地将其声明为局部变量!它现在将遮蔽您的全局定义......除非您尝试先访问它。解决方案很简单:如果要分配给任何变量,则显式声明它们为全局变量:

   function test()
global tp
if tp==0
tp=tp-1
end
end

这里的行为非常微妙,但非常一致。我知道我花了几次时间阅读了手册的这一部分,然后才最终理解了它是如何工作的。如果你能想到更好的方式来描述它,请说出来!

关于variables - Julia :变量未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24830074/

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