如何在Ruby中创建哈希数组

时间:2011-01-28 08:10:39

标签: ruby arrays hash push

红宝石的新手,我正在尝试创建一个哈希数组(或者我是否向后推?)

def collection
  hash = { "firstname" => "Mark", "lastname" => "Martin", "age" => "24", "gender" => "M" }
  array = []
  array.push(hash)
  @collection = array[0][:firstname]
end

@collection没有显示位置0中对象的名字...我做错了什么?

提前致谢!

3 个答案:

答案 0 :(得分:48)

您使用Symbol作为使用Hash个对象作为键的String对象的索引,所以只需执行此操作:

@collection = array[0]["firstname"]

我建议您使用Symbol作为Hash密钥,而不是String s,因为Symbol被缓存,因此效率更高,所以这将是一个更好的解决方案:

def collection
  hash = { :firstname => "Mark", :lastname => "Martin", :age => 24, :gender => "M" }
  array = []
  array.push(hash)
  @collection = array[0][:firstname]
end

答案 1 :(得分:2)

您已将哈希的键定义为String。但是,您试图将其引用为Symbol。这不会那样。

尝试

@collection = array[0]["firstname"]

答案 2 :(得分:2)

你可以这样做:

@collection = [{ "firstname" => "Mark", "lastname" => "Martin", "age" => "24", "gender" => "M" }]