From: nobu@... Date: 2014-11-13T08:12:09+00:00 Subject: [ruby-core:66251] [ruby-trunk - Feature #10498] Make `loop` yield a counter Issue #10498 has been updated by Nobuyoshi Nakada. Description updated ---------------------------------------- Feature #10498: Make `loop` yield a counter https://bugs.ruby-lang.org/issues/10498#change-49930 * Author: Franck Verrot * Status: Open * Priority: Normal * Assignee: ruby-core * Category: core * Target version: current: 2.2.0 ---------------------------------------- # Problem Teaching Ruby, we always end up with that type of construct ```ruby 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 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 `` object, so we would just do `.times { |i| ... }`. Also, this is the very first patch I submit to Ruby, I might have done something horrible, feel free to tell me :-) ---Files-------------------------------- 0001-vm_eval.c-loop-now-yields-a-incremented-counter.patch (1.74 KB) -- https://bugs.ruby-lang.org/