如何在循环中添加键值对以进行散列

时间:2014-06-26 05:19:49

标签: ruby hash

我想将键值对添加到循环中的哈希中。我的哈希看起来像这样

[ {'filename' => fileName1, 'filelocation'=> fileLocation1}, {'filename' => fileName2, 'filelocation'=> fileLocation2} ]

我使用以下代码来执行此操作。它不会添加所有值,而是添加最后一个键值对。

fileDetails= {}
doc = REXML::Document.new args[0]
doc.elements.each("node/congfigurations/config") {
 |config| 
    fileName= config.elements["@fileName"].value
    fileLocation= config.elements["@location"].value
    fileDetails={'filename' => fileName, 'filelocation'=> fileLocation}
}

如何收集所有值?

1 个答案:

答案 0 :(得分:3)

首先,您的预期输出不是哈希,而是一个数组。所以声明就像这样

fileDetails = []

在循环内部,进行此更改

fileDetails << {'filename' => fileName, 'filelocation'=> fileLocation}
# push the Hash into the array

修改

它不会添加所有值,但是最后一个键值对

这是因为您正在使用赋值运算符。因此,每次在循环中,变量都会被重新分配,最后您将获得最后指定的值。