2009/11/5 Jesù¸ Gabriel y GaláÏ <jgabrielygalan / gmail.com>: > On Thu, Nov 5, 2009 at 8:25 AM, Robert Klemme > <shortcutter / googlemail.com> wrote: >> On 11/04/2009 06: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 ? >> >> The block *is* saved and reused when creating nested Hashes! >> >>> 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. >> >> No need for that. lease look at my code again. > > I think he might want to save typing: > > a = Proc.new {|h,k| h[k] = Hash.new(&h.default_proc)} > b = Hash.new &a > c = Hash.new &a > d = Hash.new &a > > Maybe this is his use case? If I wanted to save typing I'd place the whole construction in a method def cnh # silly name "create nested hash" Hash.new {|h,k| h[k] = Hash.new(&h.default_proc)} end a = cnh b = cnh c = cnh d = cnh Kind regards robert -- remember.guy do |as, often| as.you_can - without end http://blog.rubybestpractices.com/