From: Trans Date: 2007-11-14T12:51:22+09:00 Subject: Re: Proposal: Array#walker On Nov 13, 8:11 pm, Wolfgang N�dasi-Donner wrote: > A nicer version may be... > > class Array > def walker > l = self.length > if block_given? > l.times do |i| > yield self[0, i], self[i], self[i+1, l-i-1] > end > else > return Enumerable::Enumerator.new(self, :walker) > end > end > end Hmm... a.each_with_index do |el, i| pre, post = a[0,i], a[i+1..-1] ... end That's not too bad, so I'm not sure it's worth it (?) However, a few times I've wanted a nicer way to split the array at an index. Something like: a.each_with_index do |el, i| pre, post = *a.crack(i) ... end T.