On May 8, 2006, at 3:44 PM, Louis J Scoras wrote:

> Don't do this...This one bit me hard =)
>
>    hash = Hash.new( [ ] )
>    hash[:new_key] << 3
>
>    hash.length             # => 0 ouch
>    hash.keys                # => [ ] doh!
>
>    # this why this was painful...
>    hash[:new_key] # => [ 3 ]
>
>    hash[:another_key] # => [ 3 ]
>
> So anyway, is there no way to have this do what I mean? or do I have
> to initialize it seperately?
>
>    hash[:new_key] ||= [ ]
>    hash[:new_key] << 3
>
> I'm having a total mental lapse, but I know using the block form won't
> help either, i.e.:
>
>    hash = Hash.new { [ ] }
>
> Any thoughts?

Hash.new { |hash, key| hash[key] = Array.new }

;)

James Edward Gray II