[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.lang.ruby

Help with simple meta programming

Mário Lopes

5/30/2007 7:42:00 AM

Hi,

This is a basic question of meta-programming with Ruby, which I'm
still getting familiar with.

I want to change/create a new attr_accessor such that it calls a kind
of proxy for retrieving the variable (which is not actually stored in
the object itself but rather on the database).

def variable
invoke_method(variable)
...
end

def variable=(value)
invoke_method(variable, value)
...
end

So, I catch the method name which should correspond to the variable
(except for the set method, which includes an extra '=') and pass it
to another function.

Any hints on how to get it done the right way? Thanks!

Cheers,

Mário

1 Answer

Robert Dober

5/30/2007 11:40:00 AM

0

On 5/30/07, mario.lopes@gmail.com <mario.lopes@gmail.com> wrote:
> Hi,
>
> This is a basic question of meta-programming with Ruby, which I'm
> still getting familiar with.
>
> I want to change/create a new attr_accessor such that it calls a kind
> of proxy for retrieving the variable (which is not actually stored in
> the object itself but rather on the database).
>
> def variable
> invoke_method(variable)
> ...
> end
>
> def variable=(value)
> invoke_method(variable, value)
> ...
> end
>
> So, I catch the method name which should correspond to the variable
> (except for the set method, which includes an extra '=') and pass it
> to another function.
>
> Any hints on how to get it done the right way? Thanks!
>
> Cheers,
>
> Mário
>
>
>
Maybe you would like to have a look at my personal favorite of all
Ruby Quizzes(*) (well that is of course save my own - just kidding-
there are lots of close seconds BTW):
http://rubyquiz.com/q...
I am quite sure that this should cover your needs.

Cheers
Robert

(*) although I miserably failed to find a solution (at that time).

--
You see things; and you say Why?
But I dream things that never were; and I say Why not?
-- George Bernard Shaw