2009-06-15 9 views
2

私はコレクションにいくつかのハッシュオブジェクトを保存したいと思います(Javaの世界ではそれをリストと考える)。私はRubyに類似したデータ構造があるかどうかをオンラインで検索し、見つからなかった。瞬時に私はハッシュa[]をハッシュb[]に保存しようとしていましたが、ハッシュからデータを取得しようとして問題が発生しましたb[]ハッシュを別のハッシュの共通プラクティスに保存していますか?

Rubyに組み込みのコレクションデータ構造はありますか?そうでなければ、ハッシュを別のハッシュの共通プラクティスに保存していますか?

+2

いくつかのコードを表示できますか? –

答えて

3

それが問題であるハッシュハッシュにアクセスしていた場合、試してみてください。

>> p = {:name => "Jonas", :pos => {:x=>100.23, :y=>40.04}} 
=> {:pos=>{:y=>40.04, :x=>100.23}, :name=>"Jonas"} 
>> p[:pos][:x] 
=> 100.23 
1

Rubyのリストは配列です。 Hash.to_aを使用できます。

あなたはハッシュBにハッシュAを統合しようとしている場合は、Hash.merge

EDITを使用することができます:あなたは、ハッシュBにハッシュaを挿入しようとしている場合は、

b["Hash a"] = a; 
+0

説明のために:マージは2つのハッシュを1つにまとめ、別のハッシュに値として1つのハッシュを追加しません。 – Chuck

+0

ああ、私は彼がやりたいことを誤解した。 – CookieOfFortune

+0

さて、私はそれがどれほど確実であるかはわかりません。私はそれがハッシュ内のハッシュだと思うが、わからない。 – Chuck

2

ありshouldnを行うことができますそれには何の問題もありません。

a = {:color => 'red', :thickness => 'not very'} 
b = {:data => a, :reason => 'NA'} 

おそらく、発生している問題を説明することができます。

2

を右、質問が完全に明確ではないが、私はあなたがハッシュのリスト(配列)を持つようにしたいと思いますか?

その場合

、あなただけの、Javaのリストのようなものである1列にそれらを置くことができます:あなたがリスト[0]とリストのようなものをハッシュを取得することができます

a = {:a => 1, :b => 2} 
b = {:c => 3, :d => 4} 
list = [a, b] 

[1]

1
ここ

すべての答えは、これまでの完全性の理由のために、私はこれでチャイムますので、プラスハッシュハッシュない、ハッシュでハッシュについて、次のとおりです。あなたはAにBをマージすることを

# Define two independent Hash objects 
hash_a = { :a => 'apple', :b => 'bear', :c => 'camel' } 
hash_b = { :c => 'car', :d => 'dolphin' } 

# Combine two hashes with the Hash#merge method 
hash_c = hash_a.merge(hash_b) 

# The combined hash has all the keys from both sets 
puts hash_c[:a] # => 'apple' 
puts hash_c[:c] # => 'car', not 'camel' since B overwrites A 

注意、任意のキーそれはB内の値は上書きされます。

関連する問題