[
https://issues.apache.org/jira/browse/GROOVY-12054?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Paul King resolved GROOVY-12054.
--------------------------------
Fix Version/s: 6.0.0-alpha-2
Resolution: Fixed
> A preliminary set of "fat-free" DGM methods
> -------------------------------------------
>
> Key: GROOVY-12054
> URL: https://issues.apache.org/jira/browse/GROOVY-12054
> Project: Groovy
> Issue Type: Sub-task
> Reporter: Paul King
> Assignee: Paul King
> Priority: Major
> Fix For: 6.0.0-alpha-2
>
>
> h2. Overview
> This issue continues work from GROOVY-12034 by introducing
> {{java.util.function}}-typed overloads to frequently-used higher-order DGM
> (Default Groovy Methods). The new overloads let callers pass {{Predicate}},
> {{Function}}, {{Consumer}}, {{BiPredicate}}, {{BiFunction}} and related SAM
> types directly, without wrapping them in {{Closure}} objects ("fat-free").
> They also compose cleanly with the
> {{org.apache.groovy.util.Lambdas.curryWith()}}
> helpers: every {{...(self, BiPredicate/BiFunction, param)}} overload is
> equivalent to the single-argument form fed a right-curried SAM, i.e.
> {{list.find(condition, param) == list.find(curryWith(condition, param))}}.
> h2. Standard overloads (22)
> These mirror the existing {{Closure}}-based methods one-for-one.
> h3. Iterating / transforming
> * {{each(Iterable, Consumer)}}
> * {{eachWithIndex(Iterable, ObjIntConsumer)}}
> * {{collect(Iterator, Function)}}
> * {{collect(Iterable, Function)}}
> * {{collect(Iterable, Collection, Function)}}
> * {{collect(Map, BiFunction)}}
> * {{collectEntries(Iterable, Function)}}
> * {{groupBy(Iterable, Function)}}
> * {{inject(Iterable, BinaryOperator)}}
> * {{inject(Iterable, initialValue, BiFunction)}}
> h3. Searching / filtering
> * {{any(Iterable, Predicate)}}
> * {{every(Iterable, Predicate)}}
> * {{find(Iterable, Predicate)}}
> * {{find(Iterator, Predicate)}}
> * {{findAll(Iterable, Predicate)}}
> * {{findAll(Iterator, Predicate)}}
> * {{findAll(Set, Predicate)}}
> * {{findAll(Map, BiPredicate)}}
> * {{count(Iterable, Predicate)}}
> * {{count(Iterator, Predicate)}}
> h3. Lazy iterator variants
> * {{collecting(Iterator, Function)}}
> * {{findingAll(Iterator, Predicate)}}
> h2. @Incubating "With"-style variants (10)
> Parameterized two-argument forms that fix {{param}} as the second argument,
> baking in the {{curryWith}} right-curry. Marked {{@Incubating}}.
> * {{collect(Iterable, BiFunction, param)}}
> * {{collecting(Iterator, BiFunction, param)}}
> * {{find(Iterable, BiPredicate, param)}}
> * {{find(Iterator, BiPredicate, param)}}
> * {{findAll(Iterable, BiPredicate, param)}}
> * {{findAll(Set, BiPredicate, param)}}
> * {{findingAll(Iterator, BiPredicate, param)}}
> * {{any(Iterable, BiPredicate, param)}}
> * {{every(Iterable, BiPredicate, param)}}
> * {{count(Iterable, BiPredicate, param)}}
--
This message was sent by Atlassian Jira
(v8.20.10#820010)