Ruby中的二维数组初始化的一个小问题
2008-06-13 16:02
218 查看
我们在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的同一引用,所以一个修改了,其他的数组元素也会跟着改变。
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中的二维数组初始化的一个小问题
- 关于如何初始化一个类内的静态二维数组变量问题
- 假设有一个二维数组:int a[3][3]={初始化了值};求出一种数字——在这一行最大在这一列最小 前提:最大值只有一个,最小值也只有一个。
- java的初始化研究:android开发中遇到的一个奇怪问题
- 还是一个类的初始化问题(初始化过程解释的非常清楚)
- 一个类中静态容器对象的初始化问题
- python初始化二维数组的小问题
- Ruby中的继承的一个问题
- 变量初始化问题--一个年轻工程师的见解
- 分享一个 变量没有初始化 可能带来的问题
- 解析 Java 类和对象的初始化过程 由一个单态模式引出的问题谈起
- camera初始化失败的一个奇怪问题
- 有关QT中声明一个vector为全局变量的初始化问题
- 今天解决了一个C++中动态二维数组的问题
- java中一个值得注意的问题---类成员初始化与变量初始化的区别
- Python和Ruby中each循环引用变量问题(一个隐秘BUG?)
- 自定义ruby异常时需要注意的一个问题
- sql_mode导致初始化mariadb-10.0.6失败的一个问题
- 一个类中静态容器对象的初始化问题
- 一个有意思的Ruby Webdriver超时问题的解决过程