a = ["Bob Green", "Don Brown", "Rich Freedom"]
a_hash = {"key_name" =>{"name" => "a_name", "a_thing" => 0}}
keys = a_hash.keys
for i in 0..a.length
aCOG = a[i]
aCOGkey = a[i].to_s.downcase.delete(' ')
keys[i] = aCOGkey
a_hash[keys[i]]["name"] = aCOG #why does this line fail?
end
3 に答える
2
どれどれ:
keys[0] == aCOGkey == a[0] == "bobgreen"
にキー「bobgreen」がないため、その行は失敗したようですa_hash
。
于 2012-09-26T20:18:57.197 に答える
1
ネストされたハッシュは、それ自体で作成するだけではありません。言い換えれば、Rubyはキーの値もハッシュであることを知りません。
上記のすべての方法を使用して、ハッシュを具体的に割り当てることができます。または、
a_hash = Hash.new { |h,k| h[k] = {} }
a_hash
これは、のすべての値がハッシュ(ネストされたハッシュ)であることを前提としています。このメソッドは、デフォルト値をハッシュに設定できます。ケースにセットすることもできh[k] = {name:"",a_thing:0}
ます。
したがって、次のようにするだけで済みます。
a = ["Bob Green", "Don Brown", "Rich Freedom"]
a_hash = Hash.new { |h,k| h[k] = {} }
a.each{|n| a_hash[n.to_s.downcase.delete(' ')]["name"] = n}
for
Rubyでは使用しないようにしてください。代わりに列挙子を使用してください。ハッシュキーには記号を使用します。
于 2012-09-26T20:39:56.790 に答える
0
ハッシュ内のハッシュに新しいキーと値のペアを書き込むと、次のように機能します。
outer_hash['inner_hash_key']['new_key_in_inner_hash'] = 'String I want to add'.
于 2012-09-26T20:18:00.420 に答える