Details
-
Improvement
-
Status: Closed
-
Minor
-
Resolution: Fixed
-
None
-
None
Description
The collectEntries extension methods accept one entry (as an entry, array, list or map). And it accepts multiple entries (via a map). However, it does not let you return no entry (as null). You can probably return an empty map...
Similar to findResults, I'd like to be able to conditionally return an entry or entries:
def map = list.collectEntries { item -> if (item ...) { def key = ..., val = ...; Collections.singletonMap(key, val) } }
org.codehaus.groovy.runtime.DefaultGroovyMethods#addEntry(Map,Object) could check for null before calling asType(newEntry, Map.Entry.class).
collectMany has a similar issue. I need to write "if (x) y else Collections.emptyList()" instead of just "if (x) y" in the closure block. A simple null check in org.codehaus.groovy.runtime.DefaultGroovyMethods#collectMany(Iterable,Collection,Closure) could take care of this.