From: Alex Shulgin Date: 2007-09-19T03:10:09+09:00 Subject: Re: Modifying a hash key On Sep 17, 10:41 pm, Robert Klemme wrote: > On 17.09.2007 20:19, Alex Shulgin wrote: > > >> I'd do this, note all the freezing in order to make errors with > >> changing keys obvious. > > >> state = Hash.new {|h,k| h[k]=[]} > >> prefix = [].freeze > > >> ARGF.each do |line| > >> line.scan /\w+/ do |word| > >> state[prefix] << word.freeze > >> (prefix += [word]).freeze > >> # or: prefix = (prefix.dup << word).freeze > >> end > >> end > > > Uh-oh... this freeze stuff seems overly complicated to me. > > Well, it's not necessary - I just put it there in order to find bugs. > [snip] > > You find my code "overly complicated"? Amazing... Oh, sorry, I didn't want to hurt anyone... First of all your and mine code do different things, and most importantly that freeze stuff _really_ scared me. I thought it was some kind of garbage-collection voodoo. ;-) Now I see it may be safely removed after debugging the code. This way your code looks much better, thanks! Alex