syntax quickie

K

Kev Jackson

Hi all,

What exactly does the following do and how can I test it? It looks like
its creating a new value with the key name, but how do you call it?

def [](name)
@val[name]
end

Any help appreciated

Kev
 
C

Christophe Grandsire

Selon Kev Jackson said:
Hi all,

What exactly does the following do and how can I test it? It looks lik= e
its creating a new value with the key name, but how do you call it?

def [](name)
@val[name]
end

Any help appreciated

Just call it using array notation: foo[name]. Array notation is just synt=
actic
sugar for the method [](argument), i.e. foo[name] is the same as foo.[](n=
ame).

So basically you have here an object that contains a hash as an instance
variable (named @Val, not the clearest name ever chosen ;) ), and allows =
you to
directly read the values in that hash using array notation, as if the obj=
ect was
a hash itself.
--
Christophe Grandsire.

http://rainbow.conlang.free.fr

It takes a straight mind to create a twisted conlang.
 
K

Kev Jackson

Christophe said:
Selon Kev Jackson <[email protected]>:


Hi all,

What exactly does the following do and how can I test it? It looks like
its creating a new value with the key name, but how do you call it?

def [](name)
@val[name]
end

Any help appreciated

Just call it using array notation: foo[name]. Array notation is just syntactic
sugar for the method [](argument), i.e. foo[name] is the same as foo.[](name).

So basically you have here an object that contains a hash as an instance
variable (named @val, not the clearest name ever chosen ;) ), and allows you to
directly read the values in that hash using array notation, as if the object was
a hash itself.
Thanks, so I had actually accessed it by accident anyway :).

Kev
 
D

Dido Sevilla

Hi all,

What exactly does the following do and how can I test it? It looks like
its creating a new value with the key name, but how do you call it?

def [](name)
@val[name]
end

It's actually Ruby's syntax for operator overloading. An instance of
a class that defines this can be "indexed" as though it were an array
or hash. Other operators are overriden in the same way, e.g.

def +(x)
...
end

Remember that everything in Ruby is an object, so when you see even
something as simple as 1 + 1 in Ruby, that's actually syntactic sugar
for 1.+(1), calling the + method for an instance of the Fixnum class.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,756
Messages
2,569,535
Members
45,008
Latest member
obedient dusk

Latest Threads

Top