From: don mc Date: 2006-07-13T05:59:20+09:00 Subject: Re: multiple level hash assignment equivalence to perl Thanks! Thats just what I needed. Regards, Don Joel VanderWerf wrote: > don mc wrote: >> Is there a succinct way in ruby to do a multiple level hash assignement? >> I am more >> used to perl, which you can do something like >> >> >> $hp->{level1}->{level2} = 3 >> >> even if the first and second level had never existed below. > > There's an autovivification trick, using the default proc of a hash (see > ri default_proc): > > irb(main):002:0> pr = proc {|h,k| h[k]=Hash.new(&pr) } > => # > irb(main):003:0> h = Hash.new(&pr) > => {} > irb(main):004:0> h[1][2][3][4] = 5 > => 5 > irb(main):005:0> h > => {1=>{2=>{3=>{4=>5}}}} -- Posted via http://www.ruby-forum.com/.