On Mon, 19 Feb 2001, Harry Ohlsen wrote:

> >Every object will respond to to_s, and to_s will always give you
> >*something*.  But sometimes you might want a given class to have a
> >non-canonical way of showing itself as a string.  In such a case, you
> >can define a to_str method, such that your objects have their own idea
> >of how to represent themselves as strings.
> 
> I would have thought that, generally speaking, the "canonical" form is
> going to be fairly uninformative.  Hence, anyone who wants to have a
> more "meaningful" string representation for their class would want it
> to be used whenever a string is needed.  Hence, they'd want it to be
> what "to_s" generates.

I'm kinda thick, so I have a simpler view...

Defining 'to_str' for a class means you don't have to bother doing 'to_s'
anymore, when doing string operations. So if you're gonna do a lot of string
operations, then go for it.

It's also like 'coerce'... you can always do 'a = 1 + 2.4.to_i', but having
a coerce function means you can do 'a = 1 + 2.4' instead.

Another way of viewing it... it's a class by class toggle on whether you
want automatic type conversion or not.

There you go... three not entirely accurate ways of viewing it. The truth's
somewhere in the cross hairs. :)

-- 
  spwhite / chariot.net.au