A question about attr_reader

Hi All,

I am just going through the pickacxe book and have a question about
attr_reader. Here is the sample class.

class Song
def initialize(name, artist, duration)
@name = name
@artist = artist
@duration = duration
end
end

It says I can do the following-

class Song
def name
@name
end
def artist
@artist
end
def duration
@duration
end
end

OR

I can do the following-

class Song
attr_reader :name, :artist, :duration
end

This is fine, but it says “The corresponding instance variables, @name,
@artist, and @duration, will be created automatically” (on Page 31)
about
attr_reader. I kinda thought that those variables are already created
when
“initialize” function is called. If I comment the initialize function
and
run it - I get an error.

So what does the author mean by that?

Thanks in advance,

::akbar

Thanks Patrick. You were right about the constructor call. It was my
mistake. Now without it, it returns nil as you indicated.

::akbar

On 5/4/06, Akbar P. [email protected] wrote:

end

end
attr_reader :name, :artist, :duration
Thanks in advance,

::akbar

Maybe this will help clarify:

class Foo
attr_reader :bar

def go_to_the_bar
@bar = ‘anytime’
end
end

foo = Foo.new
p foo.bar
foo.go_to_the_bar
p foo.bar

There is no error, accessing the instance variable @bar, from the
reader (it has a value of nil) – it is created on the fly. I am
guessing you commented out your initialize, but were still calling the
constructor with parameters?

pth

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs