设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 1917|回复: 1

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

[复制链接]

Lv4.逐梦者 (版主)

聪仔

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

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

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

x
问题在脚本注释中...请大神帮帮忙吧...
打了一节课才打完这段脚本好辛苦呢...
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

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

Lv3.寻梦者 (版主)

…あたしは天使なんかじゃないわ

梦石
0
星屑
2207
在线时间
4033 小时
注册时间
2010-10-4
帖子
10779

开拓者贵宾

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

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

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

评分

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

查看全部评分

回复 支持 反对

使用道具 举报

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

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-3-28 17:59

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表