[...]
>    my_arr = Array.new( 4 )
>    my_arr.each{ |i|
>        i = Array.new
>    }
> 
>    my_arr.each { |j|
>        puts j.type
>    }
> 
> I get the following output:
>    NilClass
>    NilClass
>    NilClass
>    NilClass
>    [nil, nil, nil, nil]
[...]
> Conclusion: I understand why I can't pass Array.new as the default value in 
> Array.new.  However, I do _not_ understand why the first iterative approach 
> does not work.  I obviously know how to acquire the desired result, but 
> that doesn't quench my curiousity as to why the other does not work.  Can I 
> bother someone for some enlightenment?

'i' is a reference that points to the array element. When you assign to it,
you make it point to your new array, and all contact with the array element
is lost. You need one more level of indirection.