I you already know how this infinite hash works then you are all set. If not read along.
Default value of Hash
If I want a hash to have a default value then that’s easy.
Above code will give me a fixed value if key is not found. If I want dynamic value then I can use block form.
1 2 3
Default value is hash
If I want the default value to be a hash then it seems easy but it falls apart soon.
1 2 3 4
In the above if a key is missing for h then it returns a hash. However that returned hash is an ordinary hash which does not have a capability of returning another hash if a key is missing.
This is where default_proc comes into picture. hash.default_proc returns the block which was passed to Hash.new .