Question

I'm going through the Learn Ruby the Hard Way - ex40

Currently, the code works fine. That is not my problem. My problem is every time I add a new song. A) I need to create an instance variable inside the initialize method. B) Then, I have to give it an attr_reader.

What I know if I can A) not have to keep creating new instance variable, but simply variables inside the Song class. B) Not have to create an attr_reader for each variable.

class Song
  def initialize()
    @jcole_lighter = "Come here, I\'m about to take you higher"
    @hold_on_drake = ["Cause you\'re a good girl and you know it",
                          "You act so different around me",
                          "Cause you\'re a good girl and you know it"]
  end


  def sing_me_a_song()
        for line in initialize
            puts line
        end
    end

  attr_reader :jcole_lighter
  attr_reader :hold_on_drake

end


thing = Song.new
puts thing.jcole_lighter()
puts "-"*10
thing= Song.new
puts thing.hold_on_drake()
Was it helpful?

Solution

Check this out for a good explanation of attr_reader, attr_writer, and attr_accessor.

And check this out for learning how to add parameters to the constructor.

You could have :attr_accessor :artists inside Song and in initialize do this:

@artists = Array.new

Then you can have a method add:

def add(artist)
  @artists << artist
end

Just an idea. Always happy to help a Drake fan.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top