Hi All
I have a situation in which I have the name of the class in a variable
So normally I would do
song = Song.new(“Bicylops”, “Fleck”, 260)
But I need to do something like
var2 = “Song”
var1 = var2.new(“Bicylops”, “Fleck”, 260)
This doesn’t work!
Any suggestions how to do this ?
Thnx
LuCa
On 2/14/07, Luca S. [email protected] wrote:
I have a situation in which I have the name of the class in a variable
So normally I would do
song = Song.new(“Bicylops”, “Fleck”, 260)
But I need to do something like
var2 = “Song”
var1 = var2.new(“Bicylops”, “Fleck”, 260)
This doesn’t work!
Any suggestions how to do this ?
var1 = Object.get_const(var2).new(“Bicyclops”, “Fleck”, 260)
On 2/14/07, Luca S. [email protected] wrote:
This doesn’t work!
Any suggestions how to do this ?
You need to convert your string “Song” into a Class object.
var2 = “Song”
var1 = Object.const_get(var2).new(“Bicyclops”, “Fleck”, 260)
All class and module objects are stored as constants in Object. It
gets a little tricky if you have a class withing a module –
“Music::Song”. Then you’ll have to do something like this:
current = Object
var2 = “Music::Song”
var2.split("::").each do |str|
current = current.const_get(str)
end
var1 = current.new( … )
Hope this helps
TwP
Maybe you want to have a look at this:
var1 = Object.const_get(var2)
Kind regards
Nicolai
2007/2/14, Luca S. [email protected]:
Hi
Thanks for the solution!
It works!!
LuCa
On 2/14/07, Lyle J. [email protected] wrote:
var1 = Object.get_const(var2).new(“Bicyclops”, “Fleck”, 260)
Whoops, that should be “const_get(var2)”, not “get_const(var2)”.
Luca S. <lcalje gmail.com> writes:
Hi All
I have a situation in which I have the name of the class in a variable
So normally I would do
song = Song.new(“Bicylops”, “Fleck”, 260)
I’m surprised no one else has mentioned this, but there’s very little
need to
store a class name in a string. Usually if you’re doing this then
there’s
something wrong with your methodology and there’s a much more efficient
way to
get the right results.
The only real reason I can think that you’d have that in a string and
not simple
as the class constant is if you took it from user input. Hopefully you
aren’t
letting your users decide which classes get instantiated…!