2011-01-28 115 views
16

新创建哈希值的阵列来Ruby和我试图创建哈希数组(或做我有倒退?)HOW-TO Ruby中

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

@collection不显示姓名对于位置0的对象......我做错了什么?

在此先感谢!

+1

“钥匙”=:键[2更多] – 2011-01-28 08:21:17

回答

40

您使用的是Symbol作为索引使用String对象作为键Hash对象,所以简单的做到这些:

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

我会鼓励你使用Symbol S作为Hash键而不是String是因为Symbol s的高速缓存,因此效率更高,因此这将是一个更好的解决方案:

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

对不起..我不明白..所以我应该@collection是什么? – thedeepfield 2011-01-28 08:15:14

+0

@odpogn查看更新的答案。 – 2011-01-28 08:16:11

2

您已经定义的按键你的散列号为String。但是,你试图把它作为Symbol。那不会那样工作。

尝试

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

你可以这样做:

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