On Jul 7, 2006, at 1:09 PM, Graham Smith wrote: > Hi, > > I have just started programming with Ruby and have run into the > following > problem. > > I'm trying to work with 3 dimensional arrays and have run into a > problem > dimensioning the array. > > a = [[[]]] > a[0][0] = [ 0,1,2,3] > a[0][1] = [ "zero", "one","two",three"] > > The above assignments work without a problem, but the following > assignment > fails. > > a[1][0] = [ 4, 5, 6, 7] > NoMethodError: undefined method `[]=' for nil:NilClass > > How do you dimension the number of elements in a multi-dimensional > array when > the final number of elements in the array is not known. > > -- > Regards, > > Graham Smith > class Array def default(&proc) @default = proc self end alias_method :rb_array_indexing, :"[]" def [](index) if @default and index.kind_of? Integer and index >= length index.downto(length) do |i| self[i] = @default.call(i) end end rb_array_indexing(index) end end a = [] a.default { [] } a[1][0] = "Hello" a #=> [[], ["Hello"]]