Folgende Klasse stellt einen Java-ähnlichen Iterator für alle Objekte, die eine 'each' methode haben, bereit.
class Iterator def initialize(enum) @enum = enum @current = nil @back = nil @enum.each do |el| @current = el callcc do |cc| @next = cc if @back then @back.call else return end end end @current = nil @back.call if @back end def hasNext? @current != nil end def next last = @current callcc do |cc| @back = cc @next.call if @current end last end end iter = Iterator.new(1..3) while iter.hasNext? puts iter.next end
1 2 3