On Nov 13, 8:11 pm, Wolfgang Nádasi-Donner <
ed.oda...@...>
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.