我有一个阵列,"模板"。
puts templates
给我以下输出:
{"id"=>4, "subject"=>"invoice", "body"=>"dear sirs", "description"=>"banking", "groups"=>"123", 0=>4, 1=>"invoice", 2=>"dear sirs", 3=>"banking", 4=>"123"}
我想"把"某个元素,例如"亲爱的先生们#34;我试过了:
puts templates[2]
但这只是返回零。这样做的正确方法是什么?
答案 0 :(得分:0)
您可以使用与其关联的密钥"dear sirs"
"body"
访问puts templates["body"]
:
{{1}}
答案 1 :(得分:0)
假设你有这样的哈希
@a = {"id"=>4, "subject"=>"invoice", "body"=>"dear sirs", "description"=>"banking", "groups"=>"123", 0=>4, 1=>"invoice", 2=>"dear sirs", 3=>"banking", 4=>"123"}
如果您想获得关键名称' body'的价值,那么您可以获得这样的输出,
puts @a['body'] //Output = dear sirs
puts @a['subject'] //Output = invoice
有关ruby hash Ruby Hash
的更多信息答案 2 :(得分:0)
如果您想通过数字索引获取哈希值,那么您可以执行templates.values[index]
e.g
templates.values[0] => 4
templates.values[1] => "invoice"
templates.values[2] => "dear sirs"
答案 3 :(得分:0)
注意:我的回答基于强烈的假设,可能并非如此。我已经提供了验证这一点的步骤。
如果您使用旧的ruby版本,则需要puts templates.inspect
才能打印Hash
。因此,建议您的变量templates
为String
。最佳验证方式:
templates.class
#=> returns Hash or String accordingly.
如果它返回String
,您可以按以下步骤操作:
将String
转换为Hash
hash = eval(templates)
#=> {"subject"=>"invoice", 0=>4, "description"=>"banking", 1=>"invoice", 2=>"dear sirs", "id"=>4, 3=>"banking", "body"=>"dear sirs", 4=>"123", "groups"=>"123"}
现在它是Hash
,您可以使用其键访问任何值,如:
hash[key]
#=> val
您的案例示例:
hash[2]
#=> "dear sirs"