【发布时间】:2019-06-08 18:06:35
【问题描述】:
我对 Julia 1.0.3 处理全局变量的方式有些疑惑。有没有办法使用 !push 来更新全局数组?
在玩REPL的时候,我想更新一个全局变量,然后push!把结果放到一个全局数组中存储。
var = [1]
res = []
for i in 1:5
global var
global res
push!(var,i)
print(string(var,"\n"))
push!(res,var)
end
但是,res 中存储的值如下:
[1, 1, 2, 3, 4, 5]
[1, 1, 2, 3, 4, 5]
[1, 1, 2, 3, 4, 5]
[1, 1, 2, 3, 4, 5]
[1, 1, 2, 3, 4, 5]
而我希望这样:
[1, 1]
[1, 1, 2]
[1, 1, 2, 3]
[1, 1, 2, 3, 4]
[1, 1, 2, 3, 4, 5]
特别令人费解,因为行为似乎与变量而不是数组的预期一致:
var = 1
res = []
for i in 1:5
global var
global res
var = var + i
print(string(var,"\n"))
push!(res, var)
end
这给出了预期的结果:
2
4
7
11
16
我显然错过了一些东西。
【问题讨论】:
标签: arrays julia push global read-eval-print-loop