On 29.05.2007 10:51, kimersen / gmail.com wrote:
> Hi,
> 
> I'm playing around with ruby trying to understand whats going on, and
> here is something I don't understand.
> 
> class ZNum
>   def initialize(n)
>     @n=n
>   end
>   def to_s
>     self.class
>   end
> end
> 
> n = ZNum.new(1234)
> 
> puts n            # prints #<ZNum:0xb75dfcc8>
> puts n.to_s     # prints ZNum
> 
> In both cases it uses ZNum#to_s, but the results are different. Why?

Because puts will revert to something else (likely #inspect) if the 
result of to_s is not String.

irb(main):001:0> class Foo
irb(main):002:1> def to_s; self.class.to_s end
irb(main):003:1> end
=> nil
irb(main):004:0> puts Foo.new
Foo
=> nil

Kind regards

	robert