Since ‘atMax:’ doesn’t seem as clear to me, I’d prefer ‘upToMax:’ or ‘withMax:’ 
or (especially) the following:

upTo: anInteger timesDo: aBlock
upTo: anInteger timesSelect: aBlock
upTo: anInteger timesCollect: aBlock

James Foster

> On Jan 21, 2018, at 8:56 AM, Stephane Ducasse <[email protected]> wrote:
> 
> I thought about something like that...
> 
> SequenceableCollection >> atMax: numberOfItems do: aBlock
>    "Execute the iteration with at the maximum numberOfItems. If the
> receiver contains less than numberOfItems iterate them all."
>    1 to: (numberOfItems min: self size) do: [:index | aBlock value:
> (self at: index)]
> 
> This is an abstraction that we need to treat some samples.
> 
> Stef
> 
> On Sun, Jan 21, 2018 at 5:47 PM, Stephane Ducasse
> <[email protected]> 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 | ]
>> 
>> 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 <[email protected]> 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 <[email protected]> wrote:
>>>> 
>>>> On 21 January 2018 at 18:36, Stephane Ducasse <[email protected]>
>>>> 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
> 
> 


Reply via email to