./ruby/test/streams.rb

download original
#infinite streams, 1st try (using Enumerable)


class AllNats
  include Enumerable

  def each
    x=0
    while 1
      yield(x)
      x += 1
    end
  end

end


class TakeN
  include Enumerable

  def initialize(n,input)
    @n = n
    @input = input
  end

  def each
    i=0
    @input.each \
    { | x |
      yield(x) if i<@n
      i += 1
      # runs infinitely...
      # need a way to "abort" blocks...
      # Enumerables have no "cursor"
    }
  end

end




  
back to test

(C) 1998-2017 Olaf Klischat <olaf.klischat@gmail.com>