On Sun, 21 Aug 2005, Alucard wrote:

> Hello
>
> I am very new to Ruby and currently install Ruby 1.82.15
>
> My question, what's wrong with the following code?
>
> class Song
> 	def initialize(name, artist, duration)
> 		@name = name
> 		@artist = artist
> 		@duration = duration
> 	end
>
> 	def to_s
> 		puts "Song: #{@name}--#{@artist} (#{@duration})"
> 	end
> end
> class KaraokeSong < Song
> 	def initialize(name, artist, duration, lyrics)
> 		super(name, artist, duration)
> 		@lyrics = lyrics
> 	end
>
> 	def to_s
> 		super + " [#{@lyrics}]"
> 	end
> end
> aSong = KaraokeSong.new("KSongName", "KSongArtist", 225, "Klyrics")
> aSong.to_s
>
> The error is:
> Song: KSongName--KSongArtist (225)
> song.rbw:33:in `to_s': undefined method `+' for nil:NilClass
> (NoMethodError)
> 	from song.rbw:37
>
> Please help!
>
> Thanks in advance

super doesn't return a string - you've got

   def to_s
     puts "Song: #{@name}--#{@artist} (#{@duration})"
   end

it returns nil (the return value of puts).  try

   def to_s
     "Song: #{@name}--#{@artist} (#{@duration})"
   end

hth. and welcome aboard!

-a
-- 
===============================================================================
| email :: ara [dot] t [dot] howard [at] noaa [dot] gov
| phone :: 303.497.6469
| Your life dwells amoung the causes of death
| Like a lamp standing in a strong breeze.  --Nagarjuna
===============================================================================