如何使用变量字符串访问多维数组?

时间:2012-05-27 18:45:05

标签: ruby

以下内容中的最后一个不起作用:

puts node.elasticsearch[:plugin][:jetty][:name]
puts node.elasticsearch[:plugin]['jetty'][:name]
puts node.elasticsearch[:plugin]["'#{entry}'"][:name]

在访问多维数组时,为了在索引中使用变量值,我需要遵循什么语法?

更新: 我认为条目是一个字符串,但我可能是错的,所以这里的语句为你设置了受过良好教育的帮助,以确定是什么:

Dir.entries("/var/plugins/").any? do |entry|
    puts node.elasticsearch[:plugin][:jetty][:name]
    puts node.elasticsearch[:plugin]['jetty'][:name]
    puts node.elasticsearch[:plugin]["'#{entry}'"][:name]
end

2 个答案:

答案 0 :(得分:1)

你的哈希中应该有一个键String,但看起来你在小时哈希中有symoblized键。在这种情况下,请在将字符串用作键之前将其转换为Symbol

试试这段代码:

puts node.elasticsearch[:plugin][entry.to_sym][:name]

答案 1 :(得分:1)

您的哈希值使用符号编制索引,因此您应将字符串转换为符号entry.intern()

puts node.elasticsearch[:plugin][entry.intern][:name]

修改:to_syminternaliases of the String class。因此,条目必须是一个字符串,它似乎是根据您的尝试。