gpt4 book ai didi

ruby - 如何复制嵌套数组并确保副本是原始数组的完整副本

转载 作者:数据小太阳 更新时间:2023-10-29 07:35:03 25 4
gpt4 key购买 nike

是否有一种简单的方法来复制嵌套数组,以便数组中的每个对象都是原始对象的“复制品”?我最近遇到了这个:

irb(main):001:0> a = [[1,2],[3,4]]
=> [[1, 2], [3, 4]]
irb(main):002:0> b = a.dup
=> [[1, 2], [3, 4]]
irb(main):003:0> a[0][1] = 99
=> 99
irb(main):004:0> a
=> [[1, 99], [3, 4]]
irb(main):005:0> b
=> [[1, 99], [3, 4]]
irb(main):006:0> a[0] = [101,102]
=> [101, 102]
irb(main):007:0> a
=> [[101, 102], [3, 4]]
irb(main):008:0> b
=> [[1, 99], [3, 4]]

因此虽然 a 中的第一级数组是单独的对象,但它们的内容不是,a[0][1] 仍然等于 b [0][1]。通用解决方案甚至不必知道数组的嵌套深度。遍历每个对象并使其成为自身的复制品对我来说听起来有点蛮力。

最佳答案

b = Marshal.load(Marshal.dump(a))

关于ruby - 如何复制嵌套数组并确保副本是原始数组的完整副本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5282850/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com