diff options
author | Akinori MUSHA <[email protected]> | 2019-09-04 16:07:40 +0900 |
---|---|---|
committer | Akinori MUSHA <[email protected]> | 2019-09-04 16:16:47 +0900 |
commit | f6da4a544760e00d932fea9a586bd869e82ad339 (patch) | |
tree | bc74f377ae97a7efde0cc654f4fb9351ced7d04c /enumerator.c | |
parent | 1d4bd229b898671328c2a942b04f08065c640c28 (diff) |
Describe #eager in the Enumerator::Lazy section
Diffstat (limited to 'enumerator.c')
-rw-r--r-- | enumerator.c | 31 |
1 files changed, 25 insertions, 6 deletions
diff --git a/enumerator.c b/enumerator.c index 7a0a17b52f..a8d14bb98b 100644 --- a/enumerator.c +++ b/enumerator.c @@ -1676,15 +1676,34 @@ lazy_generator_init(VALUE enumerator, VALUE procs) * * # This will fetch all URLs before selecting * # necessary data - * URLS.map { |u| JSON.parse(open(u).read) }. - * select { |data| data.key?('stats') }. - * first(5) + * URLS.map { |u| JSON.parse(open(u).read) } + * .select { |data| data.key?('stats') } + * .first(5) * * # This will fetch URLs one-by-one, only till * # there is enough data to satisfy the condition - * URLS.lazy.map { |u| JSON.parse(open(u).read) }. - * select { |data| data.key?('stats') }. - * first(5) + * URLS.lazy.map { |u| JSON.parse(open(u).read) } + * .select { |data| data.key?('stats') } + * .first(5) + * + * Ending a chain with ".eager" generates a non-lazy enumerator, which + * is suitable for returning or passing to another method that expects + * a normal enumerator. + * + * def active_items + * groups + * .lazy + * .flat_map(&:items) + * .reject(&:disabled) + * .eager + * end + * + * # This works lazily; if a checked item is found, it stops + * # iteration and does not look into remaining groups. + * first_checked = active_items.find(&:checked) + * + * # This returns an array of items like a normal enumerator does. + * all_checked = active_items.select(&:checked) * */ |