2011-07-29 185 views
3

的值我使用紅寶石:常量

MyModule.constants.each do |c| 
    #my loop 
end 

如何獲得每個常量的值,而不是它的名字?

回答

8

您正在尋找Module#const_get

irb(main):014:0> MyModule.constants.each do |c| 
irb(main):015:1* puts(c.to_s + " " + MyModule.const_get(c).to_s) 
irb(main):016:1> end 
MY_CONST 5 
=> [:MY_CONST] 
4

Module.const_get

module MyModule 
    FOO = 42 
    BAR = 17 
end 
MyModule.constants.each do |c| 
    p [ c, MyModule.const_get(c) ] 
end 
#=> [:FOO, 42] 
#=> [:BAR, 17] 
+0

有'模塊:: constants'和'模塊#constants'之間有什麼區別? –

0
map = {} 
MyModule.constants.each do |name| 
    map[name] = MyModule.const_get(name) 
end