我有以下Ruby模块:
module Test
Constant1 = {
:key1 => :value1,
:key2 => :value2
}
Constant2 = {
:key1 => :value1,
:key2 => :value2
}
end
我正在尝试遍历声明的Hash常量来打印使用以下代码定义的所有键:
Test.constants.each do |constant|
constant.keys.each do |key|
puts "key: #{key}"
end
end
但是我得到NoMethodError: undefined method 'keys' for "Constant2":String
并且我不知道如何将String
转换为真实的成本。谁知道怎么做?
答案 0 :(得分:3)
试试这个:
Test.constants.each do |c|
Test.const_get(c).each do |key, value|
puts "key: #{key}, value: #{value}"
end
end
答案 1 :(得分:2)
这有效:
Test.constants.each do |constant|
Test.const_get(constant).keys.each do |key|
puts "key: #{key}"
end
end
答案 2 :(得分:0)
从模块Test获取的常量实际上是[“Constant1”,“Constant2”]。 如果你真的想以这种方式使用哈希,你可以在模块变量中存储哈希值。