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 [](index) @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 "[](index)", so how come can we pass the index
within the braces instead of after it i.e shouldn't it be "list.[](0)"?
But strangely, both work!
Please let me understand how "list[0]" works fine for the function
defined as "[](index)".
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
···
On Wed, Apr 23, 2008 at 6:07 AM, Mohnish Chaudhary <mohnish82@rediffmail.com> wrote:
What I don't understand is how is "list[0]" working ? The syntax of
the method specified is "(index)", so how come can we pass the
index within the braces instead of after it i.e shouldn't it be
"list.(0)"? But strangely, both work!
I must admit this language is strange ( but it's fun )
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)
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.