diff options
| author | Kenji Okimoto <[email protected]> | 2017-03-30 10:53:55 +0900 |
|---|---|---|
| committer | Kenji Okimoto <[email protected]> | 2017-03-30 10:53:55 +0900 |
| commit | d93a5c1a8417949769714be40aaf62121059da96 (patch) | |
| tree | 35ddd2f3f8076891546bd20fc502f82b985e824e /mrbgems/mruby-enumerator | |
| parent | 905f46a129de65098b3130789bb9c412201f4cb4 (diff) | |
| download | mruby-d93a5c1a8417949769714be40aaf62121059da96.tar.gz mruby-d93a5c1a8417949769714be40aaf62121059da96.zip | |
Fix Enumerator#each_with_index with block
In previous version,
```
a = [3, 2, 1]
e = a.each
e.sort_by(&:to_i) # => []
```
In this version,
```
a = [3, 2, 1]
e = a.each
e.sort_by(&:to_i) # => [1, 2, 3]
```
Diffstat (limited to 'mrbgems/mruby-enumerator')
| -rw-r--r-- | mrbgems/mruby-enumerator/mrblib/enumerator.rb | 4 | ||||
| -rw-r--r-- | mrbgems/mruby-enumerator/test/enumerator.rb | 7 |
2 files changed, 9 insertions, 2 deletions
diff --git a/mrbgems/mruby-enumerator/mrblib/enumerator.rb b/mrbgems/mruby-enumerator/mrblib/enumerator.rb index 89b66cd45..c7b78be5c 100644 --- a/mrbgems/mruby-enumerator/mrblib/enumerator.rb +++ b/mrbgems/mruby-enumerator/mrblib/enumerator.rb @@ -177,8 +177,8 @@ class Enumerator # # If no block is given, a new Enumerator is returned that includes the index. # - def each_with_index - with_index + def each_with_index(&block) + with_index(0, &block) end ## diff --git a/mrbgems/mruby-enumerator/test/enumerator.rb b/mrbgems/mruby-enumerator/test/enumerator.rb index e86e874f0..763cd36e2 100644 --- a/mrbgems/mruby-enumerator/test/enumerator.rb +++ b/mrbgems/mruby-enumerator/test/enumerator.rb @@ -65,6 +65,13 @@ assert 'Enumerator#with_index string offset' do assert_raise(TypeError){ @obj.to_enum(:foo, 1, 2, 3).with_index('1').to_a } end +assert 'Enumerator#each_with_index' do + assert_equal([[1,0],[2,1],[3,2]], @obj.to_enum(:foo, 1, 2, 3).each_with_index.to_a) + a = [] + @obj.to_enum(:foo, 1, 2, 3).each_with_index {|*i| a << i} + assert_equal([[1, 0], [2, 1], [3, 2]], a) +end + assert 'Enumerator#with_object' do obj = [0, 1] ret = (1..10).each.with_object(obj) {|i, memo| |
