2011-01-28 14 views
16

新しいRubyでハッシュの配列を作成し、私はハッシュの配列を作成しようとしている(または私はそれが逆方向にしているのですか?)はHOW-TOルビーする

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

@collectionは、ファーストネームが表示されませんポジション0のオブジェクトの場合...何が間違っていますか?

ありがとうございます!

+1

"キー" =キー[2]詳細 –

答えて

40

あなたはそう簡単にこれを行うには、キーとしてStringオブジェクトを使用していますHashオブジェクトへのインデックスとしてSymbolを使用している:

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

私はHashキーではなくStringとしてSymbol Sを使用することをお勧めしますsのため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

+0

@odpogn更新された回答を参照してください。 –

+0

OHHH(額を叩く)、ありがとう! – thedeepfield

2

あなたのハッシュの長さはStringです。しかし、あなたはそれをSymbolとして参照しようとしています。それはそのようには動作しません。

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

オハイオ州オハイオ州、ハハ感謝〜 – thedeepfield

1

は、あなたがこれを行うことができます試してみてください!

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