我想了解 copy()
之间的区别和 deepcopy()
在 Julia 。基于我在 the Julia docs 中读到的内容好像deepcopy()
复制这些值,然后创建一个与我从中复制的原始对象无关的新对象。那部分是有道理的。我对以下对象之间的关系更加困惑:
julia> a = [1,2,3]
3-element Array{Int64,1}:
1
2
3
julia> b = copy(a)
3-element Array{Int64,1}:
1
2
3
julia> a == b
true
julia> isequal(a,b)
true
也许这只是我上面选择的一个不好的例子,但我不知道深度复制会提供多少不同的结果(也许在我的简单示例中不会,但是否有一个经过验证的真实示例突出了深度复制和常规复制之间的区别?)。
最佳答案
重要的区别在于deepcopy
是递归的,而 copy
不是:
julia> a = [[1,2,3], [4,5,6]];
julia> b = copy(a);
julia> c = deepcopy(a);
julia> a[1][1] = 11
11
julia> a
2-element Array{Array{Int64,1},1}:
[11, 2, 3]
[4, 5, 6]
julia> b
2-element Array{Array{Int64,1},1}:
[11, 2, 3]
[4, 5, 6]
julia> c
2-element Array{Array{Int64,1},1}:
[1, 2, 3]
[4, 5, 6]
关于julia - Julia 中的复制和深复制有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60017533/