Syntax quickie

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

Selon Kev Jackson <kevin.jackson@it.fts-vn.com>:

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 :wink: ), and allows you to
directly read the values in that hash using array notation, as if the object was
a hash itself.

···

--
Christophe Grandsire.

http://rainbow.conlang.free.fr

It takes a straight mind to create a twisted conlang.

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.

···

On 10/24/05, Kev Jackson <kevin.jackson@it.fts-vn.com> wrote:

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

Christophe Grandsire wrote:

Selon Kev Jackson <kevin.jackson@it.fts-vn.com>:

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 :wink: ), and allows you to
directly read the values in that hash using array notation, as if the object was
a hash itself.
--
Christophe Grandsire.

Thanks, so I had actually accessed it by accident anyway :).

Kev