[#10209] Market for XML Web stuff — Matt Sergeant <matt@...>

I'm trying to get a handle on what the size of the market for AxKit would be

15 messages 2001/02/01

[#10238] RFC: RubyVM (long) — Robert Feldt <feldt@...>

Hi,

20 messages 2001/02/01
[#10364] Re: RFC: RubyVM (long) — Mathieu Bouchard <matju@...> 2001/02/05

[#10708] Suggestion for threading model — Stephen White <spwhite@...>

I've been playing around with multi-threading. I notice that there are

11 messages 2001/02/11

[#10853] Re: RubyChangeRequest #U002: new proper name for Hash#indexes, Array#indexes — "Mike Wilson" <wmwilson01@...>

10 messages 2001/02/14

[#11037] to_s and << — "Brent Rowland" <tarod@...>

list = [1, 2.3, 'four', false]

15 messages 2001/02/18

[#11094] Re: Summary: RCR #U002 - proper new name fo r indexes — Aleksi Niemel<aleksi.niemela@...>

> On Mon, 19 Feb 2001, Yukihiro Matsumoto wrote:

12 messages 2001/02/19

[#11131] Re: Summary: RCR #U002 - proper new name fo r indexes — "Conrad Schneiker" <schneik@...>

Robert Feldt wrote:

10 messages 2001/02/19

[#11251] Programming Ruby is now online — Dave Thomas <Dave@...>

36 messages 2001/02/21

[#11469] XML-RPC and KDE — schuerig@... (Michael Schuerig)

23 messages 2001/02/24
[#11490] Re: XML-RPC and KDE — schuerig@... (Michael Schuerig) 2001/02/24

Michael Neumann <neumann@s-direktnet.de> wrote:

[#11491] Negative Reviews for Ruby and Programming Ruby — Jim Freeze <jim@...> 2001/02/24

Hi all:

[#11633] RCR: shortcut for instance variable initialization — Dave Thomas <Dave@...>

13 messages 2001/02/26

[#11652] RE: RCR: shortcut for instance variable initialization — Michael Davis <mdavis@...>

I like it!

14 messages 2001/02/27

[#11700] Starting Once Again — Ron Jeffries <ronjeffries@...>

OK, I'm starting again with Ruby. I'm just assuming that I've

31 messages 2001/02/27
[#11712] RE: Starting Once Again — "Aaron Hinni" <aaron@...> 2001/02/27

> 2. So far I think running under TextPad will be better than running

[#11726] Re: Starting Once Again — Aleksi Niemel<zak@...> 2001/02/28

On Wed, 28 Feb 2001, Aaron Hinni wrote:

[ruby-talk:11082] Re: to_s and <<

From: "W. Kent Starr" <elderburn@...>
Date: 2001-02-19 07:06:12 UTC
List: ruby-talk #11082
On Sunday 18 February 2001 20:43, David Alan Black wrote:
> On Mon, 19 Feb 2001, craig duncan wrote:
> > 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?
>
> No, because to_s is inherited from Object by every object, whereas
> to_str is only defined for a couple of built-in types (String,
> Exception).
>
> > 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.
>
> Here's my current understanding of it, for what it's worth:
>
> 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.
>
> A little test/demo:
>
>    class Pretender
>
>      attr_reader :to_str
>
>      def initialize(s)
>        @to_str = "I am a Pretender object initialized with #{s}."
>      end
>
>    end
>
>    p = Pretender.new(Math::PI)
>
>    puts "Canonical/inherited conversion to string:"
>    puts p.to_s
>    puts
>    puts "Pretender object's own choice as to how to appear as a string:"
>    puts p.to_str
>
>
> Once an object has its to_str method, it will be able to respond with
> something when it is asked to do so by (for example) String#<<.
>
>

Or, consider that varying methods either assume an object is a string
and rasie an excpetion if it is not (e.g. puts) or make no such assumption 
but does the conversion internally (e.g print) so that for:

list = ['test', 2, false, 2.3]

the following:

list.each { |i| print i, "\n" }
list.each { |i| puts i.to_s }

produce the same result, but:

list.each { |i| puts i }

raises an exception.

Now, class Array (v 1.62) does not have a built-in to_str method, but
it can, as in:

class Array
  def to_str(x='')
    s = ''
    self.each { |i| s += i.to_s + x }
    s =~ /^(.*)#{s}$/
    $1
  end
end

which produces the following:

list.to_str #-> 'test2false2.3'
list.to_str "\s" #->'test 2 false 2.3'
list.to_str "," #->'test,2,false,2.3'
list.to_str '::' #->'test::2::false::2.3'

thus showing one of the main benefts of Ruby, which is if core functionality 
is 'lacking' for a specific user need, the user simply rolls his/her own! :-)

BTW list.to_str "\n" per the above -> nil. Does this violate POLS? No. As 
written, the method thus called should return nil. A non-string argument 
raises an exception.  It should...it is a very poorly written method! :-)

Regards,

Kent Starr
elderburn@mindspring.com
 

raises an excpetion.


In This Thread