を置く:ルビー:私は配列のハッシュのハッシュを持っている変数の値と名前
hash = Hash.new do |hash, key|
hash[key] = Hash.new do |hash, key|
hash[key] = Array.new
end
end
私も3つの変数の値を取得するループを持っている:
author = gets.chomp
file = gets.chomp
time = Time.now
これらの3つの変数私のハッシュの3世代に対応します:authorは第1世代の変数で、ハッシュと同じです。 fileは第2世代の変数であり、配列に等しい。時間は第3世代の変数であり、単純な値に等しい。
これは私がハッシュに値を代入することを目的とする方法である:
hash[author][file] = file
hash[author][file].push(time)
私の問題は、私は著者とハッシュ内のファイルを実装したい場合、私は第二世代を破壊することを考えるということですハッシュや配列や設定の代わりに単純な値に等しい変数:
hash[author][file] = file #here, instead of adding a new key in the 2nd generation hash, I replace the hash with a single value.
hash[author][file].push(time) #the "file" variable isn't an array anymore, it is a string, so I can't push anything in it.
私はそれがキーになって、ハッシュに値をプッシュするような何かを行うことができますか?
CODE:
hash = {1 => {"a1" => ["un", "uno"], "a2" => ["uunn", "uunnoo"]}, 2 => {"b1" => ["deux", "dos"], "b2" => ["ddeuxx", "ddooss"]}}
hash.each do |key, value|
puts key
value.each do |key, value|
puts key
value.each do |value|
puts value
end
end
end
結果:むしろ、その後
1
a1
un
uno
a2
uunn
uunnoo
2
b1
deux
dos
b2
ddeuxx
ddooss
ご入力データがどのように見えるんなりましょう:あなたは、キーの値として文字列を設定することができますか?値をハッシュに「プッシュ」しないで、値を割り当てます。 – tadman
投稿に追加します – nounoursnoir
これは、カスタムクラスまたはStructの良い候補のようです。ハッシュや配列のようなプリミティブを使用する複雑なデータ構造は、今や頭痛のレシピであり、後の大きな頭痛です。 – moveson