Project1

标题: 聪对多维数组的克隆有一个疑问... [打印本页]

作者: 正太君    时间: 2014-11-18 11:34
标题: 聪对多维数组的克隆有一个疑问...
问题在脚本注释中...请大神帮帮忙吧...
打了一节课才打完这段脚本好辛苦呢...
RUBY 代码复制
  1. DATA1 = [1,2]
  2. DATA2 = [[2,2],[3,3]]
  3.  
  4. def asd
  5.   data0 = DATA1
  6.   data = data0.clone
  7.   p data # => [1,2]
  8.   for i in 0...data.size
  9.     data[i] *= 2
  10.     data[i] *= 3
  11.   end
  12.   p data0 # => [1,2]  一维数组还好
  13. end
  14.  
  15. def sdf
  16.   data0 = DATA2
  17.   data = data0.clone # 或者dup结果也一样...
  18.   p data # => [[2,2],[3,3]]
  19.   for i in 0...data.size
  20.     data[i][0] *= 2
  21.     data[i][1] *= 3
  22.   end
  23.   p data0 # => [[4,6],[6,9]]  二维数组就不听话了...
  24.   # 聪希望像方法sdf那样,对data0克隆出来的数组data操作之后不影响data0的值,
  25.   # 即这里依旧是[[2,2],[3,3]],请问怎么样才能做到呢...
  26. end
  27.  
  28. asd
  29. sdf

脚本没法测试,不知道是不是有错误,但是意思大家应该懂哒...求帮助...
作者: taroxd    时间: 2014-11-18 12:30
本帖最后由 taroxd 于 2014-11-18 12:45 编辑

最简单的深度拷贝方法:
data0 = Marshal.load Marshal.dump data

当然,你可以自己定义“复制构造函数”(initialize_copy)。不过一般没这个必要就是了。




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1