红宝石的新手,我正在尝试创建一个哈希数组(或者我是否向后推?)
def collection
hash = { "firstname" => "Mark", "lastname" => "Martin", "age" => "24", "gender" => "M" }
array = []
array.push(hash)
@collection = array[0][:firstname]
end
@collection没有显示位置0中对象的名字...我做错了什么?
提前致谢!
答案 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" }]