From: Tim Ferrell Date: 2005-02-12T05:14:39+09:00 Subject: Re: a problem outputting text try this... #---- test.rb ---- class Song attr_writer :name, :duration def initialize(name, duration) @name = name @duration = duration end def print puts "The song name is #{@name} and the duration is {@duration}\n\n" end end class Song2 attr_writer :name, :duration def initialize(name, duration) @name = name @duration = duration end def to_s return "The song name is #{@name} and the duration is duration}\n\n" end end if $0 == __FILE__ # create an instance of Song asong = Song.new("Some Bangin' Tune", 2443) puts asong asong.print # change attribute values asong.name = "A New Tune" asong.duration = 3750 puts asong asong.print # create an instance of Song2 asong = Song2.new("Another Bangin' Tune", 2660) puts asong end #---- end test.rb ---- a few things to note... in your original version you had: puts { "text here" } Ruby sees the braces as a block associated with the call to puts, rather than an argument to puts, which is why it was printing blank lines I also think attr_writer implies attr_reader so you don't need both when using attr_writer. Also, by adding a method to_s to a class (as in Song2), it is automatically called when you "puts" the varas opposed to just printing out the address Hope this helps... Cheers, Tim Ghelani, Vidhi wrote: > Hey, > > > > I am trying to test some of my code. Here it is : > > ************************************************************************ > ************************* > > class Song > > > > def duration= (newDuration) > > @duration = newDuration > > end > > > > def initialize(name, duration) > > @name = name > > @duration = duration > > end > > > > attr_reader :name, :duration > > attr_writer :name, :duration > > > > def print > > puts {"The song title is #{@name} and the track length is > #{@duration} /n" } > > end > > > > > > end > > > > > > asong = Song.new("Mahi Ve", 2443) > > asong.print > > asong.name > > asong.duration > > > > ************************************************************************ > *********************** > > However, this does not print anything. There are no errors showing up > either. All that happens is that it prints blank lines. > > > > Does anyone know where I am going wrong ? > > > > Any help would be appreciated. > > > > Thanks, > > Vidhi > > > >