HI all, this is my first post in the forum! I got the Ruby and Rails
books for Christmas and I am having a lot of fun with them. But I am
stuck on page 27 in Programming Ruby. I’ve gotten the code from the web
site and it’s not working.
Here is the code:
!#/usr/local/bin/ruby -w
class Song
def to_s
“Song: #@name–#@artist (#@duration)”
end
end
song = Song.new(“Bicylops”, “Fleck”, 260)
song.to_s
Here is my error:
ruby.rb:8:in initialize': wrong number of arguments (3 for 0) (ArgumentError) from ruby.rb:8:innew’
from ruby.rb:8
The error message says “wrong number of arguments (3 for 0)”, meaning
that
Song#initialize (the initialize method defined by “def initialize …
end” inside the Song class) doesn’t take any arguments, while in the
above
line you are in fact supplying 3 arguments to it.
So, either the problem is in the call and you’re supposed to call
Song.newsans arguments:
Song.new()
Or Song#initialize got ill-defined/overriden in some problematic way.
Option #2 seems more likely; it’s not logical that you can create a song
object without even a name.
class Song
def initialize(name, artist, duration) @name = name @artist = artist @duration = duration
end
end
You probably thought that the code you chose to execute was
independent of the code above it. In Ruby, classes are open and new
methods can be added to a class by using the ‘class’ keyword again and
again
This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.