From: Joel VanderWerf Date: 2008-02-20T07:23:54+09:00 Subject: Re: ||= [] idiom Sebastian Hungerecker wrote: > Leslie Viljoen wrote: >> @categories = {} >> >> pagelist.each do |resource| >> @categories[resource.tag] ||= [] >> @categories[resource.tag] << resource >> end >> >> >> .. is there a better way? > > @categories = Hash.new {Array.new} > pagelist.each do |resource| > @categories[resource.tag] << resource > end That one still bites me from time to time... irb(main):001:0> h = Hash.new {Array.new} => {} irb(main):002:0> h[4] => [] irb(main):003:0> h[4] << 5 => [5] irb(main):004:0> h => {} Try this... irb(main):005:0> h = Hash.new {|h,k| h[k]=Array.new} => {} irb(main):006:0> h[4] << 5 => [5] irb(main):007:0> h => {4=>[5]} -- vjoel : Joel VanderWerf : path berkeley edu : 510 665 3407