You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@groovy.apache.org by "Paul King (Jira)" <ji...@apache.org> on 2023/08/02 10:45:00 UTC

[jira] (GROOVY-10893) collectEntries accepts one or more entry values for each iteration but not zero (via null)

    [ https://issues.apache.org/jira/browse/GROOVY-10893 ]


    Paul King deleted comment on GROOVY-10893:
    ------------------------------------

was (Author: paulk):
The collectMany extension is similar to flatMap, and that would work by flattening (potentially empty) lists or non-empty optionals. I think it would be worth:
* having some examples with the empty lists (I noticed you changed quite a few but I haven't checked some examples of the old style are left. I'll add some more examples unless I find some still there.)
* supporting Optional (I'll raise another issue for this)


> collectEntries accepts one or more entry values for each iteration but not zero (via null)
> ------------------------------------------------------------------------------------------
>
>                 Key: GROOVY-10893
>                 URL: https://issues.apache.org/jira/browse/GROOVY-10893
>             Project: Groovy
>          Issue Type: Improvement
>          Components: groovy-jdk
>            Reporter: Eric Milles
>            Assignee: Eric Milles
>            Priority: Minor
>             Fix For: 4.0.14
>
>
> 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:
> {code:groovy}
> def map = list.collectEntries { item ->
>   if (item ...) {
>     def key = ..., val = ...;
>     Collections.singletonMap(key, val)
>   }
> }
> {code}
> {{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.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)