From: Alder Green Date: 2006-05-12T00:04:21+09:00 Subject: Re: each with arguments On 5/11/06, Charles Churchill wrote: > I've found myself writing the following code to address needs I have > processing formatted text files, but is this possible some other and I > am going through foolish gyrations here... > > Here is the code: > > class Array > alias :orig_each :each > def each(cnt = 1, &blk) > if cnt == 1 > orig_each { |x| blk.call(x) } > else > 0.step(self.size - 1,cnt) do |i| > yield(self.slice(i,cnt)) > end > end > end > end > > so I can do things like this > > arr = [ key, value, value, key, value, value, key, value, value, ... ] > arr.each(3) do |key,val1,val2| > #manipulate them as I see fit > end > > Thanks for any help you can give! > > Charles Churchill > Account Executive > Datatek, Inc. > 800 536-4835 ext. 145 > 1 919 425-3145 (international) > churchill@datatek-net.com > require 'enumerator' (1..9).to_enum.each_slice(3) { |x, y, z| puts "%i %i %i" % [x, y, z] } 1 2 3 4 5 6 7 8 9 -Alder