Re: Class name as a variable
- From: Im still <quietstill@xxxxxxxxx>
- Date: Wed, 19 Aug 2009 22:08:10 -0500
[Note: parts of this message were removed to make it a legal post.]
2009/8/20 spox <spox@xxxxxxxxxxx>
On Wednesday 19 August 2009 12:07:06 pm Im still wrote:
Hi allmethod
I'm thinking about a question, that is : Several classes will have a
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 :)
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 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 !
.
- References:
- Class name as a variable
- From: Im still
- Re: Class name as a variable
- From: spox
- Class name as a variable
- Prev by Date: Re: Bizarre Range behavior
- Next by Date: Re: Class name as a variable
- Previous by thread: Re: Class name as a variable
- Next by thread: Re: Class name as a variable
- Index(es):
Relevant Pages
|
Loading