[ https://issues.apache.org/jira/browse/GROOVY-11586?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Paul King updated GROOVY-11586: ------------------------------- Description: Streams have both reduce and scan (in gatherers as part of JDK 24). Groovy has inject for reduce but no equivalent for scan. The intention is to provide injectAll to provide this: {code:groovy} assert (1..3).injectAll(''){ carry, next -> carry + next } == ['1', '12', '123'] var runningAvg = [1.0, 2.0, 3.0].injectAll([0.0, 0, null]){ accum, next -> var total = accum[0] + next var count = accum[1] + 1 [total, count, total/count] } assert runningAvg*.get(2) == [1.0, 1.5, 2.0] assert [a:1, b:2, c:3].injectAll('') { carry, k, v -> carry + k * v } == ['a', 'abb', 'abbccc'] {code} > Provide an injectAll DGM method > ------------------------------- > > Key: GROOVY-11586 > URL: https://issues.apache.org/jira/browse/GROOVY-11586 > Project: Groovy > Issue Type: Improvement > Reporter: Paul King > Priority: Major > > Streams have both reduce and scan (in gatherers as part of JDK 24). Groovy > has inject for reduce but no equivalent for scan. The intention is to provide > injectAll to provide this: > {code:groovy} > assert (1..3).injectAll(''){ carry, next -> carry + next } == ['1', '12', > '123'] > var runningAvg = [1.0, 2.0, 3.0].injectAll([0.0, 0, null]){ accum, next -> > var total = accum[0] + next > var count = accum[1] + 1 > [total, count, total/count] > } > assert runningAvg*.get(2) == [1.0, 1.5, 2.0] > assert [a:1, b:2, c:3].injectAll('') { carry, k, v -> > carry + k * v > } == ['a', 'abb', 'abbccc'] > {code} -- This message was sent by Atlassian Jira (v8.20.10#820010)