Calling a procedure with dinamyc name

  • Thread starter Marcelo Paniagua
  • Start date
M

Marcelo Paniagua

Hi there!

I'm using Kirbybase database and it has the peculiar way to access
fields data though methods. Is it posible to call such methods
passing the fieldname in a dinamic way?

instead of

client_id = table.client_id

I would like to use sometime like

field = 'client_id'
client_id = table.field or something like that.

This is also applicable to a program that I'm developing, in which I
want to find if a class has a given method... for example, I want to
find if a class Card has an "onplay" method.

Thanks
 
F

Francis Hwang

Hi there!

I'm using Kirbybase database and it has the peculiar way to access
fields data though methods. Is it posible to call such methods
passing the fieldname in a dinamic way?

instead of

client_id = table.client_id

I would like to use sometime like

field = 'client_id'
client_id = table.field or something like that.

This is also applicable to a program that I'm developing, in which I
want to find if a class has a given method... for example, I want to
find if a class Card has an "onplay" method.
Thanks

Maybe you want this:

field = 'client_id'
client_id = table.send field

or maybe you want this

method = table.method :client_id
client_id = method.call

... you've got quite a few options.



Francis Hwang
http://fhwang.net/
 
M

Marcelo Paniagua

For the the Kirbybase it seems like the right option. As for the other
example I have my doubts. What I want to do in that
case is something like this: I have an object of class Card. I want to
look though the object methods and find out if it has
an "onPlay" method, "onLefPlay" method, and so on. I want to do this
in order to let the user knows that he can use those
methods in a given time... Which option do you think is the right option?

Marcelo



Francis Hwang escribió:
 
R

Ryan Leavengood

Marcelo said:
Hi there!

I'm using Kirbybase database and it has the peculiar way to access
fields data though methods. Is it posible to call such methods
passing the fieldname in a dinamic way?

instead of

client_id = table.client_id

I would like to use sometime like

field = 'client_id'
client_id = table.field or something like that.

There are at least two basic options:

1. Call Object#send:

field = 'client_id'
client_id = table.send(field)

2. Use Object#method to get a method, then call it:

field = 'client_id'
method = table.method(field)
method.call
This is also applicable to a program that I'm developing, in which I
want to find if a class has a given method... for example, I want to
find if a class Card has an "onplay" method.
Thanks

You can ask an instance of Card if it responds to that method:

card = Card.new
if card.respond_to?('onplay')
# Do something
end

You may also want to research the method 'method_missing' which allows
for a lot of interesting tricks.

Regards,
Ryan
 
F

Francis Hwang

You could look at either Object#methods or Object#respond_to? depending=20=

on how you want to do it.

For the the Kirbybase it seems like the right option. As for the=20
other example I have my doubts. What I want to do in that
case is something like this: I have an object of class Card. I want=20=
to look though the object methods and find out if it has
an "onPlay" method, "onLefPlay" method, and so on. I want to do this=20=
in order to let the user knows that he can use those
methods in a given time... Which option do you think is the right=20
option?

Marcelo



Francis Hwang escribi=F3:


--=20
Este correo esta libre de virus!

Francis Hwang
http://fhwang.net/
 
M

Marcelo Paniagua

Thanks! I think that for Kirbybase I will get the method using the
fieldname and for the other case I will use the Object#respond_to?.

Marcelo Paniagua

Ryan Leavengood escribió:
 

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,743
Messages
2,569,478
Members
44,898
Latest member
BlairH7607

Latest Threads

Top