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.
| Adding Elements to a Hash | ||
|---|---|---|
| Code | Expected | Actual |
h = {}
h["Greensleeves"] = "all my joy"
h |
{"Greensleeves"=>"all my joy"} | {"Greensleeves"=>"all my joy"} |
h["Greensleeves"] = "my delight" h |
{"Greensleeves"=>"my delight"} | {"Greensleeves"=>"my delight"} |
key = "Modify me if you can"
h = { key => 1 }
key.upcase! |
"MODIFY ME IF YOU CAN" | "MODIFY ME IF YOU CAN" |
h[key] |
nil | nil |
h["Modify me if you can"] |
1 | 1 |
h.keys |
["Modify me if you can"] | ["Modify me if you can"] |
h.keys[0].upcase! |
TypeError: can't modify frozen string ... |
TypeError: can't modify frozen string from (irb):12:in `upcase!' from (irb):12 |
squares = [[1,1], [2,4], [3,9]]
results = {}
squares.each { |k,v| results[k] = v }
results |
{1=>1, 2=>4, 3=>9} | {1=>1, 2=>4, 3=>9} |
squares.inject({}) { |h, kv| h[kv[0]] = kv[1]; h } |
{1=>1, 2=>4, 3=>9} | {1=>1, 2=>4, 3=>9} |
class Array
def into_hash(h)
unless size % 2 == 0
raise StandardError, "Expected array with even number of elements"
end
0.step(size-1, 2) { |x| h[self[x]] = self[x+1] }
h
end
end
squares = [1,1,2,3,4,9]
results = {}
squares.into_hash(results) |
{1=>1, 2=>3, 4=>9} | {1=>1, 2=>3, 4=>9} |
[1,1,2].into_hash(results) |
StandardError: Expected array with even number of elements ... |
StandardError: Expected array with even number of elements from (irb):21:in `into_hash' from (irb):30 |
squares = { 1 => 1, 2 => 4, 3 => 9}
cubes = { 3 => 27, 4 => 256, 5 => 3125}
squares.merge!(cubes)
squares |
{5=>3125, 1=>1, 2=>4, 3=>27, 4=>256} | {5=>3125, 1=>1, 2=>4, 3=>27, 4=>256} |
cubes |
{5=>3125, 3=>27, 4=>256} | {5=>3125, 3=>27, 4=>256} |
squares = { 1 => 1, 2 => 4, 3 => 9}
cubes = { 1 => 1, 2 => 8, 3 => 27}
squares.replace(cubes)
squares |
{1=>1, 2=>8, 3=>27} | {1=>1, 2=>8, 3=>27} |
cubes[4] = 64 squares |
{1=>1, 2=>8, 3=>27} | {1=>1, 2=>8, 3=>27} |
defaults = {:verbose => true, :help_level => :beginner }
args = {}
requests.each do |request|
args.replace(defaults)
request.process(args) #The process method might modify the args Hash.
end |
... |
NameError: undefined local variable or method `requests' for main:Object from (irb):44 |