0

ハッシュの配列から値にアクセスしようとしています。配列の例は次のようになります。

family = [
            [
              { "Homer" => 1, "Marge" => 2, "Lisa" => 3, "Maggie" => 4, 
                "Abe" => 5, "Santa's Little Helper" => 6
              }
            ], 
            [
              { "Homer" => 2, "Marge" => 4, "Lisa" => 6,           
                "Maggie" => 8, "Abe" => 10, "Santa's Little Helper" => 12
              }
            ] 
         ]

以下のステートメントを使用して"Homer"配列 indexed 0( )のキーのハッシュ値にアクセスし、値を取得しようとすると、次のようになります。family[0]1

family[0]["Homer"]

というエラーが表示されます

"test.rb:4:in `[]': can't convert String into Integer (TypeError)"

簡単なステートメントで、そのような配列のハッシュ値にアクセスする方法について何か提案はありますか?

4

3 に答える 3

1

@Arup Rakshitは、価値を得る方法について絶対に正しいです。ただし、ハッシュの配列ではなく、配列の配列があり、それらのサブ配列にハッシュが含まれていることも知っておく必要があります。あなたのタイトルに基づいて、私はあなたがおそらくもっと似た構造を望んでいると結論付けています

family = [
          { "Homer" => 1, "Marge" => 2, "Lisa" => 3, "Maggie" => 4, 
            "Abe" => 5, "Santa's Little Helper" => 6
          }, 
          { "Homer" => 2, "Marge" => 4, "Lisa" => 6,           
            "Maggie" => 8, "Abe" => 10, "Santa's Little Helper" => 12
          } 
     ]
于 2013-09-24T14:40:08.833 に答える
1

実際にはハッシュの配列はありません。ハッシュの配列の配列があります。

ハッシュ[0]の最初の配列を与える構造を逆参照するため、エラーが発生します。配列は整数でキー付けされているため、存在しないキーにアクセスしようとしています。'homer'

すべての値を表示する方法の例を次に示し'homer'ます。自分で取得できるかどうかを確認してください。

family.each do |a|   # this is an array of arrays of hashes
  a.each do |h|      # this is an array of hashes
     h.each do |k,v| # this is a hash
       puts "#{k} => #{v}"
     end
  end
end

出力:

ホーマー => 1

マージ => 2

リサ => 3

マギー => 4

阿部=>5

サンタのリトルヘルパー => 6

ホーマー => 2

マージ => 4

リサ => 6

マギー => 8

阿部=>10

サンタのリトルヘルパー => 12

于 2013-09-24T14:37:50.683 に答える