Hi all
I’m thinking about a question, that is : Several classes will have a
method
in a same name (probably do same thing too).
then in a program I want the method calling class name coming from a
variable( or maybe a result of a expr).
for example:
class A
def abc end
end
class B
def abc end
end
#what i want to do is something like
a = a_variable.abc # a_variable = A | B
Now I’m doing this by
a = eval(" #{a_variable}.abc ")
My question is, is there any better (or nicer) way to doing this?
Thanks 
On Wednesday 19 August 2009 12:07:06 pm Im still wrote:
def abc end
Now I’m doing this by
a = eval(" #{a_variable}.abc ")
My question is, is there any better (or nicer) way to doing this?
Thanks 
With how you asked your question, I’m assuming you want to call a static
method. Otherwise, what’s the point of the eval. So, is something like
this
what you are after:
class A
def A.abc
“fu”
end
end
class B
def B.abc
“bar”
end
end
With this, there are a couple ways to do this. One, have your variable
hold
the constant:
var = A
var.abc -> “fu”
var = B
var.abc -> “bar”
If the variable holds the class name as a string, or symbol, you can
fetch the
constant:
var = ‘A’
Kernel.const_get(var).abc -> “fu”
var = :B
Kernel.const_get(var).abc -> “bar”
Hi,
Am Donnerstag, 20. Aug 2009, 04:07:06 +0900 schrieb Im still:
a = eval(" #{a_variable}.abc ")
My question is, is there any better (or nicer) way to doing this?
[untested]
What you are doing is
a = eval a_variable.to_s.abc.to_s
You probably meant
a = eval a_variable.abc.to_s
or even something else.
Bertram
2009/8/20 spox [email protected]
a = a_variable.abc # a_variable = A | B
method. Otherwise, what’s the point of the eval. So, is something like this
end
If the variable holds the class name as a string, or symbol, you can fetch
the
constant:
var = ‘A’
Kernel.const_get(var).abc -> “fu”
var = :B
Kernel.const_get(var).abc -> “bar”
==============
Hi Spox
Ye, they should be static methods, else it will be wrong. My mistake
:DThanks
very much, what you told is exactly what I want !
2009/8/20 Bertram S. [email protected]
What you are doing is
–
Bertram S.
Stuttgart, Deutschland/Germany
http://www.bertram-scharpf.de
=======================
Hi Bertram S.
I think you didn’t get me well.
But thank you for the same for replying 