Project

General

Profile

Actions

Bug #9139

closed

each_with_index

Bug #9139: each_with_index

Added by dostapn (Dima Ostapenko) over 12 years ago. Updated over 12 years ago.

Status:
Rejected
Assignee:
-
Target version:
-
ruby -v:
ruby 2.0.0p247 (2013-06-27 revision 41674) [i686-linux]
[ruby-core:58493]

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 Actions #1 [ruby-core:58494]

What's wrong with index? :)

Updated by duerst (Martin Dürst) over 12 years ago Actions #2 [ruby-core:58495]

  • 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}]

Actions

Also available in: PDF Atom