Bug #9139
closedeach_with_index
Description
Whats wrong with index?
Array.new(4, Hash.new).each_with_index{ |item, index| item["index"] = index; item["value"] = 10*index; p index;}
0
1
2
3
=> [{"index"=>3, "value"=>30},
{"index"=>3, "value"=>30},
{"index"=>3, "value"=>30},
{"index"=>3, "value"=>30}]
Updated by alexeymuranov (Alexey Muranov) over 12 years ago
What's wrong with index? :)
Updated by duerst (Martin Dürst) over 12 years ago
- Status changed from Open to Rejected
Nothing is wrong with index.
Array.new(4, Hash.new) creates an array with four copies of one and the same new hash. Your code is the same as
h = Hash.new
[h, h, h, h].each_with_index{ |item, index| item["index"] = index; item["value"] = 10*index; p index;}
Maybe what you want is this:
Array.new(4) {|_| Hash.new}.each_with_index{ |item, index| item["index"] = index; item["value"] = 10*index; p index;}
0
1
2
3
-> [{"index"=>0, "value"=>0},
{"index"=>1, "value"=>10},
{"index"=>2, "value"=>20},
{"index"=>3, "value"=>30}]