显示多个哈希键表示法



假设我有一个savon soap风格的ruby散列xml对散列的响应

   hash1= { node1­: {node­2:{node3:1­,node4:2}}­}

现在显示这个散列

hash1[:nod­e1][:node2­][:node3]

工作和输出=>1

hash1[:nod­e1][:node2­][:node4]

工作和输出=>2

hash1[:nod­e1][:node2­][:node3][:node4]

给出TypeError

尽管我在savon脚本上见过这种类型的代码。在我的情况下,什么不管用?

hash1[:nod­e1][:node2­][:node3][:node4]正在上调用方法[]

CCD_ 2。

这相当于尝试1[:node4]。整数上的方法采用Fixnum,不能将符号(或字符串等)隐式转换为整数。

这些多重嵌套的哈希很难阅读,不是吗?让我们把你的杂烩散开来:

hash1= { 
  node1­: {
    node­2: { node3:1­, node4:2 }
    }­
  }

所以:node1的值本身就是一个散列。该散列中唯一的条目node2也有一个值的散列。这个散列有两个条目:node3和node4,这两个条目的值都是整数。

因此hash1[:node1][:node2]返回{node3:1, node4:2}。并且CCD_ 6返回1。

但是hash1[:node1][:node2][:node3][:node4]没有任何意义,因为1不是散列,因此没有密钥:node4。该密钥属于:node2哈希。

如果您有hash1= { node1­: {node­2: {node3: {node4:2} }}­},那么将是有意义的。但你没有。

就像我说的:这些嵌套的散列读起来很痛苦。。。

最新更新