Brian Schröäer schrieb:
> Though I never had use for this, here is my attempt on an
> autovivifying array of arrays:
> 
> class Autoarray < Array
>   def initialize(size=0, default=nil, update = nil, update_index = nil)
>     super(size, default)
>     @update, @update_index = update, update_index
>   end
>   
>   def [](k)
>     if k.abs() < self.length
>       super(k)
>     else
>       Autoarray.new(0, nil, self, k)
>     end
>   end
> 
>   def []=(k, v)
>     @update[@update_index] = self if @update and @update_index
>     super
>   end
> end
> 
> a  = Autoarray.new
> a[1][2][3] = 12
> a             #=> [nil, [nil, nil, [nil, nil, nil, 12]]]
> a[2][3][4]    #=> []
> a             #=> [nil, [nil, nil, [nil, nil, nil, 12]]]

Very nice. There are problems with negative indexes (try a[1][-2][2]) 
but I'm sure they can be fixed. I really like the idea.

Regards,
Pit