From: Robert Klemme Date: 2007-05-29T18:05:10+09:00 Subject: Re: Overriding to_s 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 # > 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