julia - Julia 中的复制和深复制有什么区别?

标签 julia

我想了解 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/

相关文章:

julia - 在 Julia 中,为什么 @printf 是宏而不是函数?

julia - 在 Julia 中使用 Lsq-Fit

c - Julia - C 结构中的固定大小数组

julia - 将绘图存储在数组中

julia - 从管道中读取 png 图像

julia - Julia 编程语言中的双点 (..) 是什么意思?

namespaces - Julia 中的命名空间冲突

python - 需要将函数迭代从 Python 转换为 Julia

dataframe - 对 Julia DataFrame 中的行求和

julia - 在 Julia 中使用 `Symbol` 或 `String` 更改复合类型字段的值