2

いくつかのハッシュ オブジェクトをコレクションに保存したいと思います (Java の世界では、それをリストと考えてください)。Ruby に同様のデータ構造があるかどうかをオンラインで検索しましたが、何も見つかりませんでした。今のところ、 hasha[]を hashに保存しようとしb[]ていますが、 hash からデータを取得しようとして問題が発生していますb[]

Ruby に組み込みのコレクション データ構造はありますか? そうでない場合、ハッシュを別のハッシュの一般的な方法で保存していますか?

4

5 に答える 5

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
于 2009-06-15T19:05:43.330 に答える
2

それで問題はないはずです。

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

おそらく、あなたが直面している問題を説明できるでしょう。

于 2009-06-15T19:03:09.153 に答える
2

質問は完全に明確ではありませんが、ハッシュのリスト (配列) が必要だと思いますよね?

その場合、それらを 1 つの配列に入れることができます。これは、Java のリストのようなものです。

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

list[0] や list[1] のようなハッシュを取得できます

于 2009-06-15T19:10:09.607 に答える
1

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

ハッシュ a とハッシュ b を結合しようとしている場合は、Hash.mergeを使用できます。

編集: ハッシュ a をハッシュ b に挿入しようとしている場合は、次のことができます。

b["Hash a"] = a;
于 2009-06-15T19:01:37.907 に答える
1

これまでのすべての回答は、ハッシュとハッシュではなく、ハッシュ イン ハッシュに関するものなので、完全を期すために、次のように説明します。

# 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 を A にマージすると、A が持っていて B にあるすべてのキーが上書きされることに注意してください。

于 2009-06-15T21:02:25.387 に答える