From: Lex Williams Date: 2008-10-02T03:23:31+09:00 Subject: Re: Ordered hash hack for < ruby 1.9? Ben Johnson wrote: > Patrick Doyle wrote: >> Why not iterate over myhash.keys.sort instead of just myhash.keys? >> >> --wpd > > Because for performance it's bad. I don't care if performance is bad in > my tests. Which is why it would be nice to alter how hashes work ONLY in > my test environment. But sorting by keys isn't smart either. > >>> a = {:a => 1, :b => 2} > => {:a=>1, :b=>2} >>> a.keys.sort > NoMethodError: undefined method `<=>' for :a:Symbol > from (irb):16:in `sort' > from (irb):16 > from :0 Here's a hack for altering the original Hash class : class Hash alias :old_equals :[]= attr_reader :ordered_values def []=(key,value) @ordered_values ||= [] @ordered_values << key old_equals(key,value) end end hsh = {} hsh["a"]="b" hsh["b"]="c" hsh.ordered_values.each do |key| puts key end ### outputs a,b -- Posted via http://www.ruby-forum.com/.