Skip to content
instance method

Enumerator::Lazy#to_enum

(::Symbol method, *untyped, **untyped) ?{ (?) -> ::Integer } -> ::Enumerator[untyped, untyped]
() ?{ () -> ::Integer } -> ::Enumerator[Elem, self]
lzy.to_enum(method = :each, *args) → lazy_enum
lzy.to_enum(method = :each, *args) {|*args| block } → lazy_enum

Similar to Object#to_enum, except it returns a lazy enumerator. This makes it easy to define Enumerable methods that will naturally remain lazy if called from a lazy enumerator.

For example, continuing from the example in Object#to_enum:

Example
# See Object#to_enum for the definition of repeat
r = 1..Float::INFINITY
r.repeat(2).first(5) # => [1, 1, 2, 2, 3]
r.repeat(2).class # => Enumerator
r.repeat(2).map{|n| n ** 2}.first(5) # => endless loop!
# works naturally on lazy enumerator:
r.lazy.repeat(2).class # => Enumerator::Lazy
r.lazy.repeat(2).map{|n| n ** 2}.first(5) # => [1, 1, 4, 4, 9]
See also #to_a #uniq #take_while #with_index also in 4.1 · 3.4 · 3.3 · 3.2 · 3.1 · 3.0