 
 This page contains automated test results for code from O'Reilly's Ruby Cookbook. If this code looks interesting or useful, you might want to buy the whole book.
| Iterating Over a Hash | ||
|---|---|---|
| Code | Expected | Actual | 
| hash = { 1 => 'one', [1,2] => 'two', 'three' => 'three' }
hash.each_pair { |key, value| puts "#{key.inspect} maps to #{value}"} | [1, 2] maps to two "three" maps to three 1 maps to one | [1, 2] maps to two "three" maps to three 1 maps to one | 
| active_toggles = { 'super' => true, 'meta' => true, 'hyper' => true }
active_toggles.each_key { |active| puts active } | hyper meta super | hyper meta super | 
| favorite_colors = { 'Alice' => :red, 'Bob' => :violet, 'Mallory' => :blue,
                    'Carol' => :blue, 'Dave' => :violet }
summary = Hash.new(0)
favorite_colors.each_value { |x| summary[x] += 1 }
summary | {:red=>1, :violet=>2, :blue=>2} | {:red=>1, :violet=>2, :blue=>2} | 
| hash = {}
1.upto(10) { |x| hash[x] = x * x }
hash.has_value? 49 | true | true | 
| hash.has_value? 81 | true | true | 
| hash.has_value? 50 | false | false | 
| 1.upto(100) { |x| hash[x] = true }
hash.keys { |k| hash[k * 2] = true } | RuntimeError: hash modified during iteration | |
| hash = {1 => 2, 2 => 2, 3 => 10}
hash.keys | [1, 2, 3] | [1, 2, 3] | 
| hash.values | [2, 2, 10] | [2, 2, 10] | 
| hash.to_a | [[1, 2], [2, 2], [3, 10]] | [[1, 2], [2, 2], [3, 10]] | 
| extensions = { 'Alice' => '104', 'Carol' => '210', 'Bob' => '110' }
extensions.keys.sort.each do |k| 
  puts "#{k} can be reached at extension ##{extensions[k]}"
end | Alice can be reached at extension #104 Bob can be reached at extension #110 Carol can be reached at extension #210 | Alice can be reached at extension #104 Bob can be reached at extension #110 Carol can be reached at extension #210 | 
| to_do = { 'Clean car' => 5, 'Take kangaroo to vet' => 3, 
          'Realign plasma conduit' => 3 }
to_do.sort_by { |task, priority| [priority, task] }.each { |k,v| puts k } | Realign plasma conduit Take kangaroo to vet Clean car | Realign plasma conduit Take kangaroo to vet Clean car | 
| transform_results = { 4 => 8, 9 => 9, 10 => 6, 2 => 7, 6 => 5 }
by_size_of_difference = transform_results.sort_by { |x, y| (x-y).abs }
by_size_of_difference.each { |x, y| puts "f(#{x})=#{y}: difference #{y-x}" } | f(9)=9: difference 0 f(6)=5: difference -1 f(10)=6: difference -4 f(4)=8: difference 4 f(2)=7: difference 5 | f(9)=9: difference 0 f(6)=5: difference -1 f(10)=6: difference -4 f(4)=8: difference 4 f(2)=7: difference 5 |