[squeak-dev] Object>>printOn: refined.

Chris Muller asqueaker at gmail.com
Wed Jun 3 03:15:44 UTC 2020


Hi Trygve,

Of all the attributes that objects print, I find the "type" (class) to be
one of the least interesting.  It's usually already obvious in its
contextual usage.  Indeed, it is the "identity" that I, too, am interested
in seeing printed.  My solution since 2006 has been an override of #printOn:
that adds a one-line dispatch to #printIdentificationOn:.  I then take care
in my #printIdentificationOn: implementations to keep the printing as terse
as it can be, and sans any line endings, to serve this seemingly recurring
use-case I have of wanting a "short version" of an object's string.  For
example, when printing the elements of a collection.  Having entire domain
hierarchies exclude the type entirely from their printString's has been a
fantastic experience.  Seeing just their identifications removes a level of
formality that seems to foster a better UI "connection" to the objects.

Regards,
  Chris

On Tue, Jun 2, 2020 at 7:10 AM Trygve Reenskaug <trygver at ifi.uio.no> wrote:

> I find it frustrating to open 3 inspectors on different objects, all of
> them titled 'aString' (or whatever),
> IMO, it is much better to open them on the 3 objects: [1234] aString,
> [3456] a String, [4567 a String.
> The numbers in square brackets stand for the objects *oop*, actually its
> *identityHash*. They can be a 7-digit numbers; much too long for my
> short-time memory to hold many of them. I therefore truncate the number to
> 4 digits, accepting that I may, in rare cases, get 2 objects with the same
> identifier.
>
> I'm running 'Squeak5.3'.
>
> *Object>>printOn: aStream*
>         "Append to the argument, aStream, a sequence of characters that
> identifies the receiver."
>         " The previous version identified the class, not the instance "
>         " This new version identifies the instance with its oop. "
>         " I arbitrarily truncate the oop to 4 digits to simplify reading. "
>
>         | title |
>         title := self class name.
>         aStream
>             nextPutAll: '[' , (self asOop printString truncateTo: 4) , ']'
> ;
>             nextPutAll: (title first isVowel ifTrue: ['an '] ifFalse: ['a
> ']);
>             nextPutAll: title
>
> Enjoy
> --Trygve
> --
>
> *The essence of object orientation is that objects collaborate  to achieve
> a goal. *
> Trygve Reenskaug      mailto: trygver at ifi.uio.no <%20trygver at ifi.uio.no>
> Morgedalsvn. 5A       http://folk.uio.no/trygver/
> N-0378 Oslo             http://fullOO.info
> Norway                     Tel: (+47) 468 58 625
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.squeakfoundation.org/pipermail/squeak-dev/attachments/20200602/8cecabc8/attachment.html>


More information about the Squeak-dev mailing list