我正在使用
MyModule.constants.each do |c|
#my loop
end
如何获取每个常量的VALUE而不是其名称?
答案 0 :(得分: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]
答案 1 :(得分: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]
答案 2 :(得分:0)
map = {}
MyModule.constants.each do |name|
map[name] = MyModule.const_get(name)
end