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.
Building Up a Hash Using Injection | ||
---|---|---|
Code | Expected | Actual |
collection = [ [1, 'one'], [2, 'two'], [3, 'three'], [4, 'four'], [5, 'five'] ] collection.inject({}) do |hash, value| hash[value.first] = value.last hash end |
{5=>"five", 1=>"one", 2=>"two", 3=>"three", 4=>"four"} | {5=>"five", 1=>"one", 2=>"two", 3=>"three", 4=>"four"} |
collection.dup.inject({}) { |hash, value| hash[value.first] = value.last } |
IndexError: index 3 out of string ... |
IndexError: index 3 out of string from (irb):8:in `[]=' from (irb):8 from (irb):8:in `inject' from (irb):8 |
Hash.new["key"] = "some value" |
"some value" | "some value" |
collection.inject({}) do |hash, value| hash.update value.first => value.last end |
{5=>"five", 1=>"ontwo", 2=>"two", 3=>"three", 4=>"four"} | {5=>"five", 1=>"ontwo", 2=>"two", 3=>"three", 4=>"four"} |
class Array def to_h(default=nil) Hash[ *inject([]) { |a, value| a.push value, default || yield(value) } ] end end a = [1, 2, 3] a.to_h(true) |
{1=>true, 2=>true, 3=>true} | {1=>true, 2=>true, 3=>true} |
a.to_h { |value| [value * -1, value * 2] } |
{1=>[-1, 2], 2=>[-2, 4], 3=>[-3, 6]} | {1=>[-1, 2], 2=>[-2, 4], 3=>[-3, 6]} |