No. nextPutAll: self is not a good solution at all. Try it, and you'll get foo, not 'foo'.
'foo' printString has exactly 5 letters: $' $f $o $o $' so it does what you want. The problem is when you want to print 'foo' printString. You are in fact doing 'foo' printString printOn: aStream, IOW aStream nextPutAll: 'foo' printString printString. 2017-10-21 21:12 GMT+02:00 Stephane Ducasse <[email protected]>: > Yes this is my point. I was surprised to get ' on the transcript. > > Stef > > On Sat, Oct 21, 2017 at 7:49 PM, Alistair Grant <[email protected]> > wrote: > > On Sat, Oct 21, 2017 at 05:28:21PM +0200, Stephane Ducasse wrote: > >> Hi > >> > >> I would like to really understand why > >> 'foo' printString > >> >>> > >> '''foo''' > >> > >> and not why this is not > >> > >> 'foo' > >> > >> itself. > >> > >> Stef > > > > I can't comment on the original thinking behind this, but I agree that > > something like: > > > > > > String>>printOn: aStream > > "Represent the receiver on the supplied stream" > > > > aStream nextPutAll: self > > > > > > > > would be much better. > > > > If we're displaying values such as numbers and strings in a UI, e.g. > > table, we normally don't want the strings always enclosed in quotes. > > > > Cheers, > > Alistair > > > > > >
