Я немного озадачен тем, как 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
Я явно что-то упускаю.