有你想編寫自己的數組類的任何具體原因是什麼?默認情況下,你可以告訴數組做什麼用填充新的元素,通過提供第二個參數:
>> 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