While playing around with the idea of ordered Hashs, I wrote the following
to sort the values into key order.

  ahash = Hash[*(1..50).map { rand(100) }] # Create something to sort.

  one = ahash.keys.sort.map {|i| ahash[i]}

  two = ahash.sort {|i,j| i[0] <=> j[0]}.map {|i,j| j}

  p one == two   -=> true

The first method gets the list of keys, sorts them, then re-accesses the
variable. The second sorts the array in place then strips out the keys.

Which is the better method? I have a feeling that Smalltalkers and
functional programmers would prefer the second method, but I find
the first method more concise and easier to understand.

The first method seems a uniquely Ruby construct. It's a combination of
OO (ahash produces keys) and procedural (ahash is operated on to get the
values) that only works because they can communicate through the iterator.

-- 
  spwhite / chariot.net.au