PickAxe - Understanding [] on SongList

Hi,

I am a newbie and am following Programming Ruby 2nd edition. On page 44,
there’s this piece of code,

class SongList
def initialize
@songs = Array.new
end
def
@songs[index]
end
end

Now, the following code works fine,
list = SongList.new

list[0] # this works fine, but how ?

What I don’t understand is how is “list[0]” working ? The syntax of the
method specified is “”, so how come can we pass the index
within the braces instead of after it i.e shouldn’t it be “list.”?
But strangely, both work!

Please let me understand how “list[0]” works fine for the function
defined as “”.

Regards,
Mohnish

On Wed, Apr 23, 2008 at 6:07 AM, Mohnish Chaudhary
[email protected] wrote:

What I don’t understand is how is “list[0]” working ? The syntax of
the method specified is “”, so how come can we pass the
index within the braces instead of after it i.e shouldn’t it be
“list.”? But strangely, both work!

That’s Ruby syntax sugar. When you define a method called “[]” which
takes one argument you can call it like this:

instance[arg]

You can also define “[]=” taking two arguments which you can call it
like this:

instance[arg1] = arg2

You can define “[]” taking two arguments and call it like this:

instance[arg1, arg2]

And so on…

Marcelo

Thanks Marcelo,

I must admit this language is strange ( but it’s fun :slight_smile: )

Is this documented in the “Programming Ruby” book? If not, where else
can I find it documented ?(so that, in future, I can refer the resource
before posting my questions)

Regards,
Mohnish

Thanks Tim.

Mohnish Chaudhary wrote:

Is this documented in the “Programming Ruby” book? If not, where else
can I find it documented ?(so that, in future, I can refer the resource
before posting my questions)

Look for “Element Reference Operator” in the book. In the 2nd Edition
it’s on page 336.