matz / netlab.co.jp (Yukihiro Matsumoto) writes:

> I'm thinking of another way:
> 
>      Hash.new{[]}
> 
> This means if the key is not found in the hash, evaluate given block
> and returns its value as default.  In this example, the block creates
> new array for each execution.

That's far more general - I like this a lot.