Re: Minor breaking change of chop(Iterator, int...) method for Groovy 5
Paul King <[email protected]> Mon, 7 Apr 2025 07:12:10 +1000
| Newsgroups | gmane.comp.lang.groovy.user |
|---|---|
| Message-ID | <CAMbkE7S=zE_6s9wKex+KbUZK6TA0+RDQQypmDah+SYaNPMPrxA@mail.gmail.com> |
Actually, there is another edge case with chop that I would also like to modify since we are making a change anyway. Even once the original source of elements is exhausted, we continue "chopping" for each asked for size but give an empty list in such cases. assert ['a', 'b', 'c', 'd', 'e'].chop(1, 2, 3, 3, 3) == [['a'], ['b', 'c'], ['d', 'e'], [], []] I don't know of anyone relying on this behavior. It is different from equivalent functionality in other languages/libraries. I'd like to make the default behavior be to stop once input elements stop, but have a boolean flag to keep the existing behavior. This gives a more sensible result if we allowed the chop sizes to be a (possibly infinite) iterator. I'll create a PR. If folks don't like changing the default, we can keep the current behavior but still have the boolean to flip to the other behavior. I just think the other behavior, while sometimes could be useful, is the rarer desired output of the two. Reminder, we are just talking about the empty lists at the end of the above example. Cheers, Paul. On Sat, Apr 5, 2025 at 11:28 PM OCsite <[email protected]> wrote: > > Hi there, > > On 4. 4. 2025, at 23:09, Mattias Reichel <[email protected]> wrote: > I don't see a problem making a breaking change in a major version update. > > > Well it's always somewhat at the inconvenient side for us who maintain a big codebase. > > On the other hand, when it's easy to find and fix all the places where the change did happen (like in this case), it's not that bad. Nevertheless changes which can't be easily found in sources (like e.g., the “foo?[]:... ” of late), can be a real PITA. > > All the best, > OC >