ara.t.howard / noaa.gov wrote: > harp:~ > cat a.rb > class Array > def self.step i, *a, &b > j, s, ignored = *a > i, j = 0, i if j.nil? > s ||= (j < i ? -1 : 1) > list = new > i.step(j,s){|k| list << k} > list.map! &b if b > list > end > end > > require 'irb/xmp' > > xmp 'Array.step(0,4)' > xmp 'Array.step(0,-4)' > > xmp 'Array.step(1,5,2)' > xmp 'Array.step(-1,-5,-2)' > > xmp 'Array.step 2' > xmp 'Array.step -2' > > xmp 'Array.step(0,7){|i| 2 ** i}' > xmp 'even = Array.step(9){|i| i.modulo(2).zero?}' > > > > harp:~ > ruby a.rb > Array.step(0,4) > ==>[0, 1, 2, 3, 4] > Array.step(0,-4) > ==>[0, -1, -2, -3, -4] > Array.step(1,5,2) > ==>[1, 3, 5] > Array.step(-1,-5,-2) > ==>[-1, -3, -5] > Array.step 2 > ==>[0, 1, 2] > Array.step -2 > ==>[0, -1, -2] > Array.step(0,7){|i| 2 ** i} > ==>[1, 2, 4, 8, 16, 32, 64, 128] > even = Array.step(9){|i| i.modulo(2).zero?} > ==>[true, false, true, false, true, false, true, false, true, false] I like it. Although also: require 'facet/interval' Interval.new(0,4).to_a => [ 0, 1, 2, 3, 4] Interval.new(0,4).to_a(2) => [ 0, 2, 4 ] etc. And it has many other applications. T.