IO output problem

I run one of examples of Programming Ruby, code as follows:

class Sone

end

song = Sone.new(…, …, …)
song.inspect
song.to_s

why I can’t see output? where is output of inspect and to_s ?
It outputs to somewhere else? IO object ?

thank you in advance

First, Song is misspelled to Sone, it seems.

To answer your question, use puts song.to_s to display output. Puts is
technically a method of Kernel, but you can use it as just puts anywhere
in your Ruby program.

Gets does (kind of) the opposite of puts and “gets” what a user at the
command line typed.

Dan

Hi –

On Fri, 15 Dec 2006, Kevin wrote:

why I can’t see output? where is output of inspect and to_s ?
It outputs to somewhere else? IO object ?

inspect and to_s just produce strings. To see them, you have to print
them :slight_smile: In fact, there are some handy methods for this:

p song # automatically calls inspect
puts song # automatically calls to_s

Also, if you are working in irb (the interactive Ruby terminal),
you’ll see the value of every expression you type in. So in irb, if
your expression evaluates to a string, you’ll see the string without
having to explicitly ask for it to be printed.

David

It’s been a while since I’ve read that example but for some reason, I
remember thinking it was just an example to show how Ruby’s object
orientation worked… not a real functional example. Perhaps it was
and I completely missed it. Dunno…

I understand now, thank you both of you

Hi –

On Fri, 15 Dec 2006, Daniel F. wrote:

To answer your question, use puts song.to_s to display output.

Or just puts song. to_s will be called automatically:

irb(main):001:0> o = Object.new
=> #Object:0xb7f06840
irb(main):002:0> def o.to_s; “Here I am!”; end
=> nil
irb(main):003:0> puts o
Here I am!

:slight_smile:

David

I think it’s from Programming Ruby: The Pragmatic Programmer’s Guide.
http://www.rubycentral.com/book/tut_threads.html

dan