On 22 January 2018 at 00:47, Stephane Ducasse <stepharo.s...@gmail.com> wrote: > Hi Ben and Clement > > I have a collection (a dictionary in my case) and I want to get > maximum 5 bindings out of it and iterate on them. > I want keysAndValuesDo: or do: but only up to 5 elements. > > aDict atMax: 5 do: [:each | ]
"atMax" sound a bit like comparison rather than counting. Perhaps better would be... aDict atMost: 5 do: [:each | ] "or" aDict for: 5 do: [:each | ] but rather than introduce three or more messages... aDict atMost: 5 do: [:each| ... ] aDict atMost: 5 select: [:each| ... ] aDict atMost: 5 collect: [:each| ... ] why not introduce just one method?.... (aDict any: 5) do: [:each| ... ] (aDict any: 5) select: [:each| ... ] (aDict any: 5) collect: [:each| ... ] cheers -ben > So I learned from:to:do: > > aCollection atMax: 5 do: [:each | ] > > Does it make sense? > > Stef > > On Sun, Jan 21, 2018 at 1:16 PM, Clément Bera <bera.clem...@gmail.com> wrote: >> I don't think we do. Do you need it on SequenceableCollection or >> HashedCollection too ? >> >> Recently I was trying to iterate over the first N elements of a collection >> and since there was no #first:do: I used #from:to:do:. I guess you could use >> that too: >> >> aCollection from: 1 to: (aCollection size min: 1000) do: aBlock >> >> Which guarantees you iterate at max over 1000 elements. But that API is >> SequenceableCollection specific. >> >> On Sun, Jan 21, 2018 at 11:44 AM, Ben Coman <b...@openinworld.com> wrote: >>> >>> On 21 January 2018 at 18:36, Stephane Ducasse <stepharo.s...@gmail.com> >>> wrote: >>> > Hi >>> > >>> > I would like to iterate at max on a certain amount of elements in a >>> > collection. >>> > And I was wondering if we have such iterator. >>> >>> I'm not clear what functionality your asking for. Could you present >>> it as code & result if you assumed the iterator you want was >>> available? >>> >>> cheers -ben >>> >> >> >> >> -- >> Clément Béra >> Pharo consortium engineer >> https://clementbera.wordpress.com/ >> Bâtiment B 40, avenue Halley 59650 Villeneuve d'Ascq >