Austin Ziegler
6/16/2005 4:17:00 PM
On 6/16/05, James Edward Gray II <james@grayproductions.net> wrote:
> On Jun 16, 2005, at 11:07 AM, Belorion wrote:
>> I want a Hash of Hashes. Furthermore, I want it so that if a key
>> for the first has does not exist, the default value is a new
>> hash.
> irb(main):001:0> foo = Hash.new { |hash, key| hash[key] = Hash.new }
> => {}
> irb(main):002:0> foo["ii"]["jj"] = "Hello World."
> => "Hello World."
> irb(main):003:0> foo["ii"]
> => {"jj"=> "Hello World."}
> irb(main):004:0> foo["ii"]["jj"]
> => "Hello World."
An infinite variation of this is a two liner.
hinit = proc { |hash, key| hash[key] = Hash.new(&hinit) }
foo = Hash.new(&hinit)
foo["ii"]["jj"]["kk"] = "Hi, James!"
require 'pp'
p foo
-austin
--
Austin Ziegler * halostatue@gmail.com
* Alternate: austin@halostatue.ca