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 ===============================================================================