Regarding Constants

H

Harnish Botadra

Hi,

I am having some difficulty in the use of constants in Ruby. I've a
module:

eg.
-------------------
Module Constants

MY_CONST = "hello"

end
-------------------

I include this module in my model. Further, the name of the constant
(MY_CONST) would be passed in a variable say 'var'. My question, is how
do I access the value of the constant from the constant name in 'var'?

Something like, :: + "{#var}" or similar? Any help greatly appreciated.
Thanks.

Regards,
Harnish
 
S

Skye Shaw!@#$

Hi,

I am having some difficulty in the use of constants in Ruby. I've a
module:

eg.

Use lowercase "m"
I include this module in my model. Further, the name of the constant
(MY_CONST) would be passed in a variable say 'var'. My question, is how
do I access the value of the constant from the constant name in 'var'?

module Constants
GRR="burr!"
end

class Bs
include Constants

def self.get_constant(name)
self.const_get(name.to_sym)
end
end

p Bs.get_constant("GRR")


Why do you need to access constants this way?
 
F

FireAphis

Hi,

I am having some difficulty in the use of constants in Ruby. I've a
module:

eg.
-------------------
Module Constants

MY_CONST = "hello"

end
-------------------

I include this module in my model. Further, the name of the constant
(MY_CONST) would be passed in a variable say 'var'. My question, is how
do I access the value of the constant from the constant name in 'var'?

Something like, :: + "{#var}" or similar? Any help greatly appreciated.
Thanks.

Regards,
Harnish

If I understand you correctly then:

Module Constants
MY_CONST = "hello"
end

def get_constant_value_by_name(var)
Constants.const_get(var)
end

get_constant_value_by_name("MY_CONST")
=> "hello"

Hope this helps,
FireAphis
 
F

FireAphis

If I understand you correctly then:

Module Constants
MY_CONST = "hello"
end

def get_constant_value_by_name(var)
Constants.const_get(var)
end

get_constant_value_by_name("MY_CONST")
=> "hello"

Hope this helps,
FireAphis

Of course, as Skye pointed out, Module should be lowercase.
Yaniv
 
F

FireAphis

If I understand you correctly then:

Module Constants
MY_CONST = "hello"
end

def get_constant_value_by_name(var)
Constants.const_get(var)
end

get_constant_value_by_name("MY_CONST")
=> "hello"

Hope this helps,
FireAphis

Of course, as Skye pointed out Module should be lowercase.
You can see that there's a slight difference between my and Skye's
implementation. That's because 'const_get' can receive either a symbol
or a string. I am personally not familiar with to_sym method. But if I
want to pass a symbol instead of a string I'd use 'var.intern'. That
is
Constants.const_get(var.intern)
which is exactly the same as
Constants.const_get(var)

FireAphis
 

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,772
Messages
2,569,593
Members
45,112
Latest member
VinayKumar Nevatia
Top