Project

General

Profile

Feature #10498

Updated by nobu (Nobuyoshi Nakada) over 5 years ago

# Problem 

 Teaching Ruby, we always end up with that type of construct 

 ```ruby 
 i `i = 0 
 loop do 
   i += 1 
   # do something with i.... 
   raise StopIteration if i ... 
 end 
 ``` ` 

 # Solution 

 What I propose with this patch is making `loop` yield the iteration count: 

 ```ruby 
 loop `loop do |i| 
   # do something with i.... 
   raise StopIteration if i ... 
 end 
 ``` ` 

 `i` starts at 0 and stops at `FIXNUM_MAX` (there's no `Float::Infinity` equivalent for integers). 

 # Alternate solution 

 `Integer#times` could work if we had an `<Integer's infinity>` object, so we would just do `<Integer's Infinity>.times { |i| ... }`. 

 Also, this is the very first patch I submit to Ruby, I might have done something horrible, feel free to tell me :-)

Back