求老哥看一下我这程序哪错了?


#1

我只想用test程序对abc里的第一个数组进行加1加2的操作,运行的结果为什么连initial的内容都变了?

function test(xyz,i)
    xyz[i,1] += 1
    xyz[i,2] += 2
end
abc =  Array{Array}(undef, 2)
initial = [0 0; 0 0; 0 0]
abc[1] = initial
abc[2] = initial

for i in 1:3
    test(abc[1],i)
end
@show(initial)
@show(abc)

julia> 
initial = [1 2; 1 2; 1 2]
abc = Array[[1 2; 1 2; 1 2], [1 2; 1 2; 1 2]]


#2

弄清 assignment 和 mutation 的区别:


#3

懂了,谢谢老哥zsbd