查看: 2874|回复: 3

[已经解决] [Ruby]关于Array.new()

[复制链接]

寒

梦石
0
星屑
1049
在线时间
1391 小时
注册时间
2010-8-9
回帖
3301
发表于 2014-10-16 08:45:06 来自手机 | 显示全部楼层 |阅读模式

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

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

×
本帖最后由 寒冷魔王 于 2014-10-17 14:49 编辑

如下代码:
a = Array.new(10,0)
b = Array.new(10,a)
b[0][0] = 1
p b[1][0]
输出结果是1
有一行全部变为1

…あたしは天

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

开拓者贵宾

发表于 2014-10-16 12:31:22 | 显示全部楼层
Ruby的参数都是按引用传递的。考虑使用 block 形式

点评

Ruby 所有参数都是对象的引用。除了立即值你可以不这么理解之外  发表于 2014-10-18 08:51
貌似数组相关的方面引用很多啊……比如a=[];b=a改变b的元素就会改变a。  发表于 2014-10-18 07:44
感觉标题new后面的括号是多余的?  发表于 2014-10-16 12:37
回复

使用道具 举报

梦石
0
星屑
9557
在线时间
5074 小时
注册时间
2013-6-21
回帖
3459

开拓者贵宾剧作品鉴家

发表于 2014-10-17 14:19:01 | 显示全部楼层
1.png
注意这个内存模型,就不难理解了。
ps:LZ有笔误,p出来的应该是b[1][0]而不是b[0][1]

评分

参与人数 1星屑 +200 收起 理由
恐惧剑刃 + 200 认可答案

查看全部评分

回复

使用道具 举报

梦石
0
星屑
2826
在线时间
2634 小时
注册时间
2013-1-16
回帖
5453

贵宾

发表于 2014-11-3 16:46:19 | 显示全部楼层
是想做二位数组?
a = Array.new(10){Array.new(10){0}}
(Created by @喵kano)


施工现场:hotege.github.io
回复

使用道具 举报

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

本版积分规则

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

在本版发帖返回顶部