Ben Tilly wrote: > > craig duncan <duncan / nycap.rr.com> wrote: > > > >Yukihiro Matsumoto wrote: > > > > > > 'to_s' is a mean to convert something into a string (if you really > > > want to), OTOH 'to_str' is a mean for something that wants to pretend > > > to be a string. to_a and to_ary are in similar relationship. > > > >The problem with this explanation is that i have no idea what it means for > >something to "pretend to be a string" as opposed to being one. > > Think of it this way. foo.to_s tells foo to describe itself > as a string. foo.to_str checks with foo that it is OK to > think of foo as being its description, and gets that > description. > > So to_str is the same as to_s except with an extra assertion > about the correct usage of that object. Wow! That was a little too subtle for me to guess. I think because of the minimalism that i (initially) perceive to be lacking in this design. to_str can always fill in for to_s, yes? So what do you need to_s for? I guess you could say that you use to_s when you _don't_ want the object to be used as a string . . . even though you want it to _appear_ that way. ? Oh, well, i guess i can accept that there _might_ be some usage for that distinction (can't think what, though). Thanks, Ben. craig