这是示例代码。我不明白为什么数组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
答案 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
,则应该使用。