麻烦为嵌套哈希值赋值

时间:2013-05-03 18:30:20

标签: ruby hash variable-assignment

我有一个嵌套的哈希,我想为其分配一个值,但是ruby一直抱怨它。

哈希:

 data = {
    name: contact.xpath('./span[1]').text.delete("\r\n").strip,
    email: contact.xpath('./a').text,
    offices: [
        postal: contact.text.split("\r\n")[4].strip, 
        tel: /(\d{3}[-\.\s]??\d{3}[-\.\s]??\d{4}|\(\d{3}\)\s*\d{3}[-\.\s]??\d{4}|\d{3}[-\.\s]??\d{4})/.match(contact).to_s     
    ],
    url: url
 }

我的作业

data[:offices][:postal] = ""

错误:

Line 42 - data[:offices][:postal] = "" -- in `[]='
#<TypeError: can't convert Symbol into Integer>

我尝试了一些其他语法,但无济于事。任何帮助表示赞赏:)

1 个答案:

答案 0 :(得分:2)

offices: [
        postal: contact.text.split("\r\n")[4].strip, 
        tel: /(\d{3}[-\.\s]??\d{3}[-\.\s]??\d{4}|\(\d{3}\)\s*\d{3}[-\.\s]??\d{4}|\d{3}[-\.\s]??\d{4})/.match(contact).to_s     
    ],

这不是嵌套哈希。使用花括号:

offices: {
        postal: contact.text.split("\r\n")[4].strip, 
        tel: /(\d{3}[-\.\s]??\d{3}[-\.\s]??\d{4}|\(\d{3}\)\s*\d{3}[-\.\s]??\d{4}|\d{3}[-\.\s]??\d{4})/.match(contact).to_s     
    },