有你想编写自己的数组类的任何具体原因是什么?默认情况下,你可以告诉数组做什么用填充新的元素,通过提供第二个参数:
>> a = Array.new(10, [])
=> [[], [], [], [], [], [], [], [], [], []]
编辑:很显然,这种方式填充阵列,以传递的对象引用,所以一旦你做a[0][0] = "asd"
,包含数组的每个第一个元素都会改变。不酷。
>> a[0][0] = "asd"
=> "asd"
>> a
=> [["asd"], ["asd"], ["asd"], ["asd"], ["asd"], ["asd"], ["asd"], ["asd"], ["asd"], ["asd"]]
要具有各自包含阵列是唯一的,使用第三语法,并给它一个块中的每个的执行时间 - 块的结果将被用于填充阵列:
>> b = Array.new(10) { [] }
=> [[], [], [], [], [], [], [], [], [], []]
>> b[0][0] = "asd"
=> "asd"
>> b
=> [["asd"], [], [], [], [], [], [], [], [], []]
另外,由于道路红宝石阵列工作,定义y轴的尺寸甚至没有必要的:当你把东西比当前的大小更大指数
>> a = Array.new(5)
=> [nil, nil, nil, nil, nil]
>> a[10]
=> nil
>> a[10] = "asd"
=> "asd"
>> a
=> [nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, "asd"]
阵列自动扩展。所以,只需创建一个包含10个空数组的数组,并且您有10 * n大小的数组即可使用。
可能。 “解读” – gmile 2009-11-12 09:03:10