Project

General

Profile

Feature #10498

Updated by nobu (Nobuyoshi Nakada) about 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