为什么在向散列添加散列时,Ruby似乎嵌套了添加的散列?
问题描述:
我试图创建如下所示的二维散列:为什么在向散列添加散列时,Ruby似乎嵌套了添加的散列?
permissions['enrollment'] = ['read' => true, 'create' => true, 'update' => true]
permissions['invoices'] = ['read' => true, 'create' => false, 'update' => false]
这是我做的......
permissions = Hash.new
permissions['enrollment'] = ['read' => true, 'create' => true, 'update' => true]
permissions['invoices'] = ['read' => true, 'create' => false, 'update' => false]
当我“放”在IRB权限我得到这个...
{
"enrollment"=>[{"read"=>true, "create"=>false, "edit"=>false}],
"invoices"=>[{"read"=>true, "create"=>false, "update"=>false}]
}
正如你可以从上面的输出看,似乎是权限另一散列内的哈希[“招生”] [{}]
!
我要访问的读取权限这样招生:permissions['enrollment']['read']
,但根据puts permission
它不会工作,我得到这个错误TypeError: can't convert String into Integer
对于我访问入学读权限,我需要做的这个:permissions['enrollment'][0]['read']
。
如何使注册读取权限如此... permissions['enrollment']['read']
?
答
您的语法关闭。哈希由花括号分隔。方括号用于数组。如果你来自PHP世界,你可能会混淆两者。试试这个:
permissions = Hash.new
permissions['enrollment'] = {'read' => true, 'create' => true, 'update' => true}
permissions['invoices'] = {'read' => true, 'create' => false, 'update' => false}
是的,来自PHP世界。谢谢 :) – leonel 2012-04-13 18:47:22