2017-04-20 17:06 GMT+02:00 Ben Coman <b...@openinworld.com>: > > > On Thu, Apr 20, 2017 at 3:17 AM, Stephane Ducasse <stepharo.s...@gmail.com > > wrote: > >> why? >> Iterators are powerful and avoid that we all reinvent the wheel in our >> own corners. >> >> About keySelect: I do not see the point to convert a large collection >> into a dictionary then do yet another pass. >> To me it looks like a hack. >> >> I implemented >> selectEvery: >> (selectFirst selectSecond) as helpers. >> >> and also unzip all in one pass. >> Now I have no problem to keep them for me but to me this is the wrong >> attitude. >> >> Stef >> >> >> testSelectEveryFirst >> self assert: (#(#Object #subclass: #Point #instanceVariableNames: 'x y' >> #classVariableNames: '' #package: 'Kernel-BasicObjects') selectEveryFirst) >> asArray equals: #(#Object #Point 'x y' '' 'Kernel-BasicObjects') >> > > > selectEveryFirst seems a strange name, not indicating the skip amount. > The first of every three? or four? As it stand, technically I'd think its > result would > be equals: (#(#Object #subclass: #Point #instanceVariableNames: 'x y' > #classVariableNames: '' #package: 'Kernel-BasicObjects') > > +1 to Peter's suggested #withIndexSelect: > > cheers -ben >
On the other hand, we have #keysAndValuesDo: which competes with #withIndexDo: and is a bit more portable across dialects (it's just that it turns the bloc parameters the other way around, [:index :element | ]) So maybe this should have been #keysAndValuesSelect: #keysAndValuesCollect: Reminder, keys does not mean Dictionary, in an IndexedCollection (or maybe a SequenceableCollection) the keys are indices. Or the other way around, a Dictionary is indexed by arbitrary keys (not just positive integers).