无法访问 Julia 数组(BoundsError:尝试访问索引 [1] 处的 0 元素 Vector{Int64} )

Bif*_*ost 5 arrays julia

朱莉娅代码:

seed = 1234
N = 2
newNum = Int64[]
for i in 1:N
    seq = digits(seed*seed, pad=8)
    seed = seq[6]*1000+seq[5]*100+seq[4]*10+seq[3]
    newNum[i] = seed
end
newNum[2]
Run Code Online (Sandbox Code Playgroud)

错误: https: //i.stack.imgur.com/3p390.png

Bog*_*ski 4

使用:

\n
seed = 1234\nN = 2\nnewNum = Int64[]\nfor i in 1:N\n    seq = digits(seed*seed, pad=8)\n    seed = seq[6]*1000+seq[5]*100+seq[4]*10+seq[3]\n    push!(newNum, seed)\nend\nnewNum[2]\n
Run Code Online (Sandbox Code Playgroud)\n

或者

\n
seed = 1234\nN = 2\nnewNum = Vector{Int64}(undef, N)\nfor i in 1:N\n    seq = digits(seed*seed, pad=8)\n    seed = seq[6]*1000+seq[5]*100+seq[4]*10+seq[3]\n    newNum[i] = seed\nend\nnewNum[2]\n
Run Code Online (Sandbox Code Playgroud)\n

但是,一般来说,我建议您将此代码包装在一个函数中,否则效率会很低,而且如果您尝试将其作为脚本运行(即不在 REPL 中交互),您将收到错误:

\n
\xe2\x94\x8c Warning: Assignment to `seed` in soft scope is ambiguous because a global variable by the same name exists: `seed` will \nbe treated as a new local. Disambiguate by using `local seed` to suppress this warning or `global seed` to assign to the existing global variable.\n\xe2\x94\x94 \nERROR: LoadError: UndefVarError: seed not defined\n
Run Code Online (Sandbox Code Playgroud)\n

原因是这seed是一个全局变量,您在循环引入的局部范围内重新绑定for。您可能想查看Julia 手册的这一部分以了解更多信息。

\n