Vic*_*huk 4 ruby arrays reference
Ruby中有没有办法制作多维数组的副本?我的意思是一些内置功能.
当我尝试使用.dup时,它只返回引用:
irb(main):001:0> a = [[1,2,3], [4,5,6]]
=> [[1, 2, 3], [4, 5, 6]]
irb(main):002:0> b = a.dup
=> [[1, 2, 3], [4, 5, 6]]
irb(main):003:0> b[0][0] = 15
=> 15
irb(main):004:0> a == b
=> true
Run Code Online (Sandbox Code Playgroud)
Sio*_*e21 11
您需要复制列表中的数组而不是外部数组.最简单的方法可能是这样的
b = a.map(&:dup)
Run Code Online (Sandbox Code Playgroud)
编组应该做的伎俩:
jruby-1.6.7 :001 > a = [[1,2,3], [4,5,6]]
=> [[1, 2, 3], [4, 5, 6]]
jruby-1.6.7 :002 > b = Marshal.load( Marshal.dump(a) )
=> [[1, 2, 3], [4, 5, 6]]
jruby-1.6.7 :004 > a == b
=> true
jruby-1.6.7 :005 > b[0][0] = 15
=> 15
jruby-1.6.7 :006 > a == b
=> false
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1481 次 |
| 最近记录: |