« Return to Thread: Proposal: Array#walker

Re: Proposal: Array#walker

by trans :: Rate this Message:

Reply to Author | View in Thread



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.


 « Return to Thread: Proposal: Array#walker