Hi Nicolas, On Sat, Oct 21, 2017 at 10:12:06PM +0200, Nicolas Cellier wrote:
IOW, if you want to print 'foo', just print 'foo', but don't print 'foo' printString.
2017-10-21 22:10 GMT+02:00 Nicolas Cellier <nicolas.cellier.aka.nice@gmail.com> :
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.
But what I want is the 3 letters in foo. Think about displaying a table of values. If it contains a mixture of numbers and strings, what I want to see is: 1 | string one | 3.1415 | string two not: 1 | 'string one' | 3.1415 | 'string two' If I want the second form (with quotes) I can use #storeString / #storeOn:. What is the one message that I can send to a mixture of numbers and strings that will return a string (or write to a stream) that will display as shown in the first example above? Thanks, Alistair
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 <stepharo.self@gmail.com>:
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 <akgrant0710@gmail.com> 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 > >