gpt4 book ai didi

julia - 为什么我在执行 'run all' 时会出错,但在单独运行每一行时却不会?

转载 作者:行者123 更新时间:2023-12-04 13:06:21 26 4
gpt4 key购买 nike

我使用 Julia 1.6.2 & Juno,我有这段代码:

println("0.5772156649015328606065120900824024310421")
jmax = 1000000
gamma = 0
j = 1

for j = jmax:-1:1
gamma = gamma + 1.e0/j
end
gamma = gamma - log(jmax)
println("$gamma, reverse order sum $(jmax)")

当我使用Ctrl+Enter依次运行每一行时没有错误。但是当我执行“全部运行”(Ctrl+Shift+Enter) 时出现错误并收到以下消息。

Warning: Assignment to 'gamma' in soft scope is ambiguous because a global variable by the same name exists: 'gamma' will be treated as a new local. Disambiguate by using 'local gamma' to suppress this warning or 'global gamma' to assign to the existing global variable.

ERROR: LoadError: UndefVarError: gamma not defined

我不知道为什么会出现这种差异。你能解释一下吗?

最佳答案

这里的问题是 Julia 有两种不同的方式来组织“范围”,即变量的可见性,根据它是交互式运行的事实,比如在 REPL 上或在编辑器中逐行运行,或者不.

完整的解释在链接上 you has been provided ,但这里的问题是您首先定义一个全局变量 gamma,然后在 for 循环中编辑此变量,引入(像函数一样)它们自己的范围。

在逐行模式下,您在 for 循环中引用的变量 gamma 被认为是您已经定义的全局变量,这一切都很好。

然而,在“完整脚本”执行模式下,您需要明确指出“我指的是全局变量 gamma”,因为此连接不会自动完成。

因此,在您的情况下,只需更改 for 循环内的行:

global gamma = gamma + 1.e0/j

明确表示您要使用全局 gamma 而不是可能的(不存在的)局部 Gamma 。这将使它在逐行和基于文件的运行中都能工作。

关于julia - 为什么我在执行 'run all' 时会出错,但在单独运行每一行时却不会?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69311062/

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