我们在Ruby中初始化一个5*5的二维数组,可以写成
data = Array.new(5, Array.new(5, 0))
也可以写成
data = Array.new(5){ Array.new(5, 0)}
初始化完成后,我可以随便给数组中某个元素赋格值,比如
data[2][2] = 2
我们会发现采用第二种初始化方式,输出是正常的,而采用第一种方式初始化,则每行的第3个数据都被赋值成了2。 这是因为,采用Array.new(size, obj)初始化时,数组中将保存obj的同一引用,所以一个修改了,其他的数组元素也会跟着改变。
Ruby中的二维数组初始化的一个小问题
最新推荐文章于 2025-03-17 09:25:24 发布
本文介绍了在Ruby中初始化二维数组的两种方法,并通过实例对比分析了Array.new(size,obj)方式下,由于所有元素共享同一引用导致的数据修改问题。
781

被折叠的 条评论
为什么被折叠?



