dynamically access class constants?

M

Marli Ba

I've been looking for a method similar to:

Obj.send:)method)

but to access class constants. So if I have:

class MyObj
MY_CONSTANT_1
end

I want to access MyObj::MY_CONSTANT_1 by using a variable like foo =
MY_CONSTANT_1 and then MyObj::send:)foo), but obviously send is only
meant to work with methods and not constants.

Is there any way to do this? I've looked but am having difficulty
finding anything.

Thanks,
Marli
 
J

Justin Collins

Marli said:
I've been looking for a method similar to:

Obj.send:)method)

but to access class constants. So if I have:

class MyObj
MY_CONSTANT_1
end

I want to access MyObj::MY_CONSTANT_1 by using a variable like foo =
MY_CONSTANT_1 and then MyObj::send:)foo), but obviously send is only
meant to work with methods and not constants.

Is there any way to do this? I've looked but am having difficulty
finding anything.

Thanks,
Marli

I am slightly confused by your example, but you definitely need
Module#const_get: http://www.ruby-doc.org/core/classes/Module.html#M001689

irb(main):001:0> class A
irb(main):002:1> B = 1
irb(main):003:1> end
=> 1
irb(main):004:0> A.const_get:)B)
=> 1

-Justin
 

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

Forum statistics

Threads
473,755
Messages
2,569,535
Members
45,007
Latest member
obedient dusk

Latest Threads

Top