From: Simon Strandgaard Date: 2004-05-06T19:07:09+09:00 Subject: [ann] iterator-0.7 homepage: http://raa.ruby-lang.org/list.rhtml?name=iterator download: http://rubyforge.org/frs/?group_id=18&release_id=467 External iterators with some STL inspiration. # # example of how to do multiway each # require 'iterator' data_a = %w(a b c d) data_b = (0..3) ia = Iterator::Continuation.new(data_a, :each) ib = Iterator::Continuation.new(data_b, :each) result = [] while ia.has_next? and ib.has_next? result << ia.current result << ib.current ia.next ib.next end ia.close ib.close p result # ["a", 0, "b", 1, "c", 2, "d", 3] # # example of how to concat iterators # require 'iterator' ary1 = "Hell".split(//).to_a ary2 = "O wO".split(//).to_a ary3 = "rld!".split(//).to_a i1 = ary1.create_iterator i2 = ary2.create_iterator i3 = ary3.create_iterator iterator = Iterator::Concat.new([i1, i2, i3]) ary2.map!{|i|i.swapcase} puts iterator.to_a.join #-> Hello World! -- Simon Strandgaard