ネストされたハッシュがあり、キー/ valのペアを再配置したいと思います。以下の例は、言語のハッシュを指し示すスタイルのハッシュを示しています。ハッシュは言語タイプのハッシュを指しています。私はそれをnew_hash
の例のように再フォーマットしたいと思います。私はさまざまなレベルのハッシュを繰り返し、そのようなハッシュを作成することで構造化することを理解していますが、私が心配している部分は、:style
が指し示す配列を作成し、ネストされたハッシュを繰り返して、アイテムを追加しながら配列を作成します。
コードスニペットが期待通りに機能すると想定しました。私のnew_hash
は:language
のキーを持ち、これは別のハッシュを指します。このハッシュは:style
というキーを持っており、それぞれの言語に関連付けられたすべてのスタイルを格納する配列を指しています。 :javascript
ハッシュは、元のhash
に2回存在するため、配列に2つのスタイルを持つ必要がありますが、このコードスニペットを実行すると、配列は両方のスタイルを追加しません。ハッシュを割り当てるときの1回の反復中に:javascript
にはスタイル:oo
が割り当てられますが、別の繰り返しでは:functional
に置き換えられます。 配列を初期化し、ハッシュを反復処理中に複数の項目を追加する構文が不明です。
hash = {
:oo => {
:ruby => {:type => "Interpreted"},
:javascript => {:type => "Interpreted"},
},
:functional => {
:scala => {:type => "Compiled"},
:javascript => {:type => "Interpreted"}
}
}
new_hash = {
:ruby => {
:type => "Interpreted", :style => [:oo]
},
:javascript => {
:type => "Interpreted", :style => [:oo, :functional]
},
:scala => {
:type => "Compiled", :style => [:functional]
}
}
hash.each do |style, programming_language|
programming_language.each do |language, type|
type.each do |key, value|
new_hash[language] = {:style => [style]}
end
end
end
「ハッシュ」に中括弧がありませんでした。これはなぜ閉じた括弧をそれ自身の行に置くべきかの良いデモンストレーションです。 – Schwern