替换数组中的特定元素也更改其他元素

时间:2019-03-10 00:10:05

标签: julia

这是示例代码。我不明白为什么数组B中的第一个元素也会被修改。我可以在数组B中保留相同的元素吗?

julia> A = [0.0 0.1 0.2 0.3];

julia> B = A;

julia> A[1] = 0.1;

julia> A
1×4 Array{Float64,2}:
 0.1  0.1  0.2  0.3

julia> B
1×4 Array{Float64,2}:
 0.1  0.1  0.2  0.3

1 个答案:

答案 0 :(得分:3)

Julia Array通过引用传递。您需要创建一个副本:

julia> A = [0.0 0.1 0.2 0.3];

julia> B = deepcopy(A)
1×4 Array{Float64,2}:
 0.0  0.1  0.2  0.3

julia> A[1] = 0.1;

julia> A, B
([0.1 0.1 0.2 0.3], [0.0 0.1 0.2 0.3])

请注意,对于此代码,仅使用copy就足够了,但是例如,如果您有一个要突变的对象数组deepcopy,则应该使用。