William Morgan wrote:

> Think about trying to interlace two Enumerables, e.g. turn ["a","b","c"]
> and [1,2,3] into ["a",1,"b",2,"c",3].  You can't use Enumerable#each (an
> internal iterator) to do this in a natural way.

But you can use Enumerable#zip -- but you're still right in that 
internal iterators aren't the most natural solution for everything.

Here's the #zip solution which shows that you can use it for iterating 
over multiple Enumerables in parallel:

irb(main):002:0> ["a", "b", "c"].zip([1, 2, 3]) do |(string, number)|
irb(main):003:1*   puts "#{string} => #{number}"
irb(main):004:1> end
a => 1
b => 2
c => 3

What this won't let you do however is skipping elements from only one of 
the Enumerables.

Regards,
Florian Gross