Method: Enumerator::Lazy#filter_map

Defined in:
enumerator.c

#filter_map {|obj| ... } ⇒ Object Also known as: _enumerable_filter_map

Like Enumerable#filter_map, but chains operation to be lazy-evaluated.

(1..).lazy.filter_map { |i| i * 2 if i.even? }.first(5)
#=> [4, 8, 12, 16, 20]

Yields:

  • (obj)


2174
2175
2176
2177
2178
2179
2180
2181
2182
# File 'enumerator.c', line 2174

static VALUE
lazy_filter_map(VALUE obj)
{
    if (!rb_block_given_p()) {
        rb_raise(rb_eArgError, "tried to call lazy filter_map without a block");
    }

    return lazy_add_method(obj, 0, 0, Qnil, Qnil, &lazy_filter_map_funcs);
}