ruby中如何向C++一样定义和使用多维数组

Python013

ruby中如何向C++一样定义和使用多维数组,第1张

C++中定义与使用数组跟C语言中是一样的。

具体定义与使用方法可以参考如下程序段:

int a[5] // 定义一个含5个元素的int类型的数组double b[5]={3.2, 3.5, 0.8, 8, 5,3} // 定义一个含5个元素的double类型的数组并初始化char c[] ="abcd" // 定义一个字符数组,并初始化a[0] = c[0] // 将字符数组的第一个字符所对应的ASCII码值赋值给数组a的第一个元素printf("%lf", b[3]) // 输出数组b的第4个元素(数组下标从0开始)

终于明白你的意思了。这不是 hash 的问题,是 Array.new 的用法不对,你这样做是指用{}这个对象填充3遍,就是说是同一个对象填充了3次,所以无论你修改哪一个对象,其它的都会跟着变,因为是同一对象。

http://www.ruby-doc.org/core-2.2.0/Array.html#method-c-new-label-Common+gotchas

以上是 ruby 文档,他给出了正确的用法:

a = Array.new(2) { Hash.new }