将键和值推送到哈希中

时间:2014-02-16 08:03:58

标签: ruby hash

我正在解析看起来像Key: Value的代码行,并将KeyValue元素插入到数组中。然后我迭代遍历该数组并尝试将这些值存储到哈希中。我希望它像:"Host => "localhost""Content-Length" => "17"

我试图关注this example

def parse_headers
@headers = {}
  while ! (line = next_line).empty?
header_elements = line.split(': ')
header_elements.each do |key, val|
    @headers[key] = val
end
    parse_header(line)
  end
puts @headers
end

我认为我的语法错了。当我打印哈希时,只有键,所有值都是nil

output

如果有人可以提供帮助,我会非常感激。

2 个答案:

答案 0 :(得分:2)

您是否注意到生成的哈希还包含应该是值的键?那是因为header_elements是一个数组,你试图将它作为一个哈希(它不是)进行迭代。实际上,您不需要迭代它。

key, val = line.split(': ')
@headers[key] = val

答案 1 :(得分:0)

这一点与Sergio的答案相同,但您不必使用两个变量。为安全起见,您可以添加参数2

@headers.store(*line.split(': ', 2))