Enumerator as an infinite generator in Ruby

前端 未结 4 1020
爱一瞬间的悲伤
爱一瞬间的悲伤 2021-02-05 04:45

I\'m reading one resource explaining how Enumerators can be used as generators, which as an example like:

triangular_numbers = Enumerator.new do |yielder|
  numb         


        
4条回答
  •  刺人心
    刺人心 (楼主)
    2021-02-05 05:25

    I found a nice concise answer in Ruby Cookbook:

    https://books.google.com/books?id=xBmkBwAAQBAJ&pg=PT463&lpg=PT463&dq=upgrade+ruby+1.8+generator&source=bl&ots=yyVBoNUhNj&sig=iYXXR_8QqVMasFnS53sbUzGAbTc&hl=en&sa=X&ei=fOM-VZb0BoXSsAWulIGIAw&ved=0CFcQ6AEwBw#v=onepage&q=upgrade%20ruby%201.8%20generator&f=false

    This shows how to make a Ruby 1.8 style Generator using the Ruby 2.0+ Enumerator class.

    my_array = ['v1', 'v2']
    
    my_generator = Enumerator.new do |yielder|
        index = 0
        loop do
            yielder.yield(my_array[index])
            index += 1
        end
    end
    
    my_generator.next    # => 'v1'
    my_generator.next    # => 'v2'
    my_generator.next    # => nil
    

提交回复
热议问题