Collecting Smalltalk idioms

Dana Anthony Dana.Anthony at sas.com
Tue Aug 10 17:22:59 UTC 1999


Re: Jesse's code below, I (and I didnt invent this, but I forget where
I got it from, someone at KSC I am sure) always used:

aCollection inject: '' into: [ :divider :each |
  aStream nextPutAll: divider.
  each printOn: aStream.
  ',']

or something of that sort.

-Dana Anthony

Jesse Welton wrote:
> 
> Bob Arning wrote:
> >
> > On Tue, 10 Aug 1999 07:54:47 -0700 Stephen Pope <stp at create.ucsb.edu>
> > wrote:
> > >
> > >Another option is the ugly (but simple)
> > >
> > >        aCollection do:
> > >                [:each |
> > >                 each printOn: aStream.
> > >                 aStream nextPut: $,].
> > >     aStream skip: -1
> >
> > Except for the situation where the collection is empty. I posted a fix
> > for just such code yesterday.
> 
> Hmm...  What about this?
> 
>         aCollection inject: #NoneYet into:
>                 [:prev :each |
>                  (prev == #NoneYet) ifFalse: [aStream nextPut: $,].
>                  each printOn: aStream.
>                  each].
> 
> It's uglier, and less simple, and it doesn't work if #NoneYet makes
> its way into aCollection, and I may have newbily screwed it up anyway,
> but at least it was fun.  And I think it works.
> 
> -Jesse

-- 
Dana Lynne Goldblatt Anthony
Internet Publications Technology at SAS Institute
World Headquarters Cary, NC, USA





More information about the Squeak-dev mailing list