2014-02-16 100 views
-1

我正在分析看起来像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

您应该注意代码的正确缩进。否则真正简单的作品会很快变得非常混乱。你基本上给自己造成了痛苦。 –

回答

2

您是否注意到您的结果散列还包含应该是值的键?这是因为header_elements是一个数组,你试图迭代它作为一个哈希(它不是)。事实上,你不需要迭代它。

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

这点和塞尔吉奥的答案是一样的,但是你不必为它使用两个变量。为了安全起见,您可以添加一个参数2

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