-2

1 つのメンバーが配列である次のハッシュ (ダミー {}) があります。コード ロジックを構築して、(a) 各キーを評価 -> 値 (b) 各キーを評価 -> 値 (場合)ハッシュ内の配列です)

dummy  = { :a1 => "xyz",
           :b1 => ["xyz1", "ayz2", "xyz3", "xyz4"] }

値が1つだけのキーのコードは次のとおりです。

eval(dummy)[a1.to_sym]

配列に複数の値を持つハッシュ メンバーを評価するクリーンな方法が必要です。

IRB の出力は次のとおりです。

1.9.3-p327 :002 > dummy  = { :a1 => "xyz",
1.9.3-p327 :003 >                :b1 => ["xyz1", "ayz2", "xyz3", "xyz4"] }
=> {:a1=>"xyz", :b1=>["xyz1", "ayz2", "xyz3", "xyz4"]}

これで、メンバーとそのキーと値のペアにアクセスできます (以下のように非常に簡単な方法で:)

1.9.3-p327 :005 > pp dummy[:a1.to_sym]
"xyz"
=> "xyz"
1.9.3-p327 :006 > pp dummy[:b1.to_sym][0]
"xyz1"
=> "xyz1"
1.9.3-p327 :007 > pp dummy[:b1.to_sym][1]
"ayz2"
=> "ayz2"
1.9.3-p327 :008 > pp dummy[:b1.to_sym][2]
"xyz3"
=> "xyz3"
1.9.3-p327 :009 > pp dummy[:b1.to_sym][3]
"xyz4"
=> "xyz4"

ここで、メンバーとその値にアクセスするために上記の両方の状況を処理する「一般的な」ルビー コードが必要です。 1000 - 5000

4

1 に答える 1

1

すべてが配列であることを確認すると、均一な処理が可能になります。

dummy  = { :a1 => "xyz",
           :b1 => ["xyz1", "ayz2", "xyz3", "xyz4"] }

dummy.each do |k, v|
  Array(v).each do |element| #Array(v) puts v in an Array, unless it already is an array.
    puts element
  end
  puts
end
于 2013-04-26T18:15:01.847 に答える