Listing an Array created within a Class


#1

I am learning from Programming Ruby wich comes with Ruby instalation.
In the chapter about containers - Implementing a SongList Container
I took the code in NetBeans like follows:

require ‘Baza.rb’ #here is my Song class
class SongList < Song
def initialize
@songs = Array.new
end
end

class SongList
def append(aSong)
@songs.push(aSong)
self
end
end

list = SongList.new
list.
append(Song.new(‘title1’, ‘artist1’, 1)).
append(Song.new(‘title2’, ‘artist2’, 2)).
append(Song.new(‘title3’, ‘artist3’, 3)).
append(Song.new(‘title4’, ‘artist4’, 4))

############# Here is my problem
puts list.to_a ???
What line must I have here to have at terminal the array that is created
in the SongList like this:
Song: title1–artist1 (1)
Song: title2–artist2 (2)… etc , so that I can work with it?
and/or to see the list elements with list[0, 2]
Thanks


#2

list.each


#3

Adrian A. wrote:

I am learning from Programming Ruby wich comes with Ruby instalation.
In the chapter about containers - Implementing a SongList Container
I took the code in NetBeans like follows:

require ‘Baza.rb’ #here is my Song class
class SongList < Song
def initialize
@songs = Array.new
end
end

class SongList
def append(aSong)
@songs.push(aSong)
self
end
end

list = SongList.new
list.
append(Song.new(‘title1’, ‘artist1’, 1)).
append(Song.new(‘title2’, ‘artist2’, 2)).
append(Song.new(‘title3’, ‘artist3’, 3)).
append(Song.new(‘title4’, ‘artist4’, 4))

############# Here is my problem
puts list.to_a ???

class SongList
def to_a
@songs
end
end

puts list.to_a

OR:

class SongList
attr_accessor :songs
end

puts list.songs

OR: another way is to make your SongList class duck-type like an Array

class SongList
def
@songs[elem]
end
def []=(elem,obj)
@songs[elem] = obj
end

… etc

end


#4

Thank you Brian very much, it works!
Hmmm, how stupid I am. I have learned about this in the previous lesson.
That’s the begining, but it’s very well that is this forum.

Adrian