查看: 2515|回复: 1

[已经解决] 聪对多维数组的克隆有一个疑问...

[复制链接]

聪仔

梦石
0
星屑
6187
在线时间
3077 小时
注册时间
2013-12-26
回帖
3076
发表于 2014-11-18 11:34:57 来自手机 | 显示全部楼层 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有账号?注册会员

×
问题在脚本注释中...请大神帮帮忙吧...
打了一节课才打完这段脚本好辛苦呢...
[pre lang="ruby" line="1"]DATA1 = [1,2]
DATA2 = [[2,2],[3,3]]

def asd
  data0 = DATA1
  data = data0.clone
  p data # => [1,2]
  for i in 0...data.size
    data *= 2
    data *= 3
  end
  p data0 # => [1,2]  一维数组还好
end

def sdf
  data0 = DATA2
  data = data0.clone # 或者dup结果也一样...
  p data # => [[2,2],[3,3]]
  for i in 0...data.size
    data[0] *= 2
    data[1] *= 3
  end
  p data0 # => [[4,6],[6,9]]  二维数组就不听话了...
  # 聪希望像方法sdf那样,对data0克隆出来的数组data操作之后不影响data0的值,
  # 即这里依旧是[[2,2],[3,3]],请问怎么样才能做到呢...
end

asd
sdf[/pre]
脚本没法测试,不知道是不是有错误,但是意思大家应该懂哒...求帮助...

…あたしは天

梦石
0
星屑
2308
在线时间
4033 小时
注册时间
2010-10-4
回帖
10548

开拓者贵宾

发表于 2014-11-18 12:30:23 | 显示全部楼层
本帖最后由 taroxd 于 2014-11-18 12:45 编辑

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

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

评分

参与人数 2星屑 +185 收起 理由
恐惧剑刃 + 100 我很赞同
正太君 + 85 谢谢版主大人的指导...咦咦咦....

查看全部评分

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部