从阵列内部“将”某个对象“放入”屏幕

时间:2014-12-31 04:46:44

标签: sql ruby hashtable

我有一个阵列,"模板"。

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]

但这只是返回零。这样做的正确方法是什么?

4 个答案:

答案 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。因此,建议您的变量templatesString。最佳验证方式:

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"