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