Changeset 331 for EcnlProtoTool/trunk/mruby-1.3.0/mrbgems/mruby-enumerator
- Timestamp:
- Jan 21, 2018, 12:10:09 AM (6 years ago)
- Location:
- EcnlProtoTool/trunk/mruby-1.3.0
- Files:
-
- 2 edited
- 1 moved
Legend:
- Unmodified
- Added
- Removed
-
EcnlProtoTool/trunk/mruby-1.3.0/mrbgems/mruby-enumerator/mrblib/enumerator.rb
r321 r331 154 154 def with_index(offset=0) 155 155 return to_enum :with_index, offset unless block_given? 156 raise TypeError, "no implicit conversion of #{offset.class} into Integer" unless offset.respond_to?(:to_int) 157 158 n = offset.to_int - 1 159 enumerator_block_call do |i| 156 offset = if offset.nil? 157 0 158 elsif offset.respond_to?(:to_int) 159 offset.to_int 160 else 161 raise TypeError, "no implicit conversion of #{offset.class} into Integer" 162 end 163 164 n = offset - 1 165 enumerator_block_call do |*i| 160 166 n += 1 161 yield [i,n]167 yield i.__svalue, n 162 168 end 163 169 end … … 172 178 # If no block is given, a new Enumerator is returned that includes the index. 173 179 # 174 def each_with_index 175 with_index 180 def each_with_index(&block) 181 with_index(0, &block) 176 182 end 177 183 … … 517 523 # just for internal 518 524 class Generator 525 include Enumerable 519 526 def initialize(&block) 520 527 raise TypeError, "wrong argument type #{self.class} (expected Proc)" unless block.kind_of? Proc -
EcnlProtoTool/trunk/mruby-1.3.0/mrbgems/mruby-enumerator/test/enumerator.rb
r321 r331 51 51 assert_equal([[1,0],[2,1],[3,2]], @obj.to_enum(:foo, 1, 2, 3).with_index.to_a) 52 52 assert_equal([[1,5],[2,6],[3,7]], @obj.to_enum(:foo, 1, 2, 3).with_index(5).to_a) 53 a = [] 54 @obj.to_enum(:foo, 1, 2, 3).with_index(10).with_index(20) { |*i| a << i } 55 assert_equal [[[1, 10], 20], [[2, 11], 21], [[3, 12], 22]], a 53 56 end 54 57 … … 61 64 assert 'Enumerator#with_index string offset' do 62 65 assert_raise(TypeError){ @obj.to_enum(:foo, 1, 2, 3).with_index('1').to_a } 66 end 67 68 assert 'Enumerator#each_with_index' do 69 assert_equal([[1,0],[2,1],[3,2]], @obj.to_enum(:foo, 1, 2, 3).each_with_index.to_a) 70 a = [] 71 @obj.to_enum(:foo, 1, 2, 3).each_with_index {|*i| a << i} 72 assert_equal([[1, 0], [2, 1], [3, 2]], a) 63 73 end 64 74
Note:
See TracChangeset
for help on using the changeset viewer.