[Pharo-dev] Probably stupid... question about string printString.

Alistair Grant akgrant0710 at gmail.com
Sat Oct 21 17:25:12 EDT 2017


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 at 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 at 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 at 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
>         >
>         >
> 
> 
> 
> 
> 




More information about the Pharo-dev mailing list