From: "Jesús Gabriel y Galán" Date: 2009-11-05T02:15:28+09:00 Subject: Re: Odd : a = Hash.new(Hash.new) On Wed, Nov 4, 2009 at 6:10 PM, Aldric Giacomoni wrote: > Robert Klemme wrote: >> >> IMHO this solution is even simpler because it does not need the method: >> >> h = Hash.new {|h,k| h[k] = Hash.new(&h.default_proc)} > > Robert - I agree. I like this one better. Feels a little more ruby-ish. > Is there a way to use Proc (or whatever does work) to save this block > and reuse it when creating a new hash ? > Something like : > a = Proc.new {|h,k| h[k] = Hash.new(&h.default_proc)} > b = Hash.new a > > Note, I know this is wrong.. It'll just put the proc as the default > value, instead of triggering the proc. irb(main):001:0> a = Proc.new {|h,k| h[k] = Hash.new(&h.default_proc)} => # irb(main):002:0> b = Hash.new &a => {} irb(main):003:0> b[1][2] = 3 => 3 irb(main):004:0> b => {1=>{2=>3}} Jesus.