Hi,

Somewhere in the code you have written 
puts asong.name 
puts asong.duration

When I run these lines basically it gives me some address in the memory
location ( or atleast that's wot I understand)
How does it help using puts in this manner? I am sure there is a reason
behind doing this? What is the advantage?

Thanks,
Vidhi.



-----Original Message-----
From: Steve Callaway [mailto:sjc2000_uk / yahoo.com] 
Sent: Friday, February 11, 2005 12:16 PM
To: ruby-talk ML
Subject: Re: a problem outputting text

Try this:

class Song
attr_reader :name, :duration
attr_writer :name, :duration

def initialize ( name, duration)
         @name = name
         @duration = duration
end

def print
    puts "The song title is  #{@name} and the track
length is #{@duration} "
end

def set_duration( newduration)
    @duration = newduration
end

end



asong = Song.new( "Good Golly Miss Molly", 240)
asong.print
puts    asong.name
puts    asong.duration

The problem is the embracement in print:
             below
>       puts {"The song title is  #{@name} and the
>       track length is
>       #{@duration} /n" }  <- and here
                            
Also be wary of using variables with the same name as
methods as in e.g. duration since Ruby will try and
evaluate the variable as a method or vice versa
dependant on where you are in the code.

--- "Ghelani, Vidhi" <vidhi.ghelani / intel.com> 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 
> 
>     
> 
>