我想将一些哈希对象保存到集合中(在Java世界中将其视为List)。我在线搜索,看看Ruby中是否有类似的数据结构,但没有找到。目前我一直在尝试将哈希a[]
保存到哈希b[]
中,但在尝试从哈希b[]
中获取数据时遇到了问题。
Ruby上是否有内置的集合数据结构?如果没有,是在另一个哈希惯例中保存哈希吗?
答案 0 :(得分: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 :(得分:2)
应该没有任何问题。
a = {:color => 'red', :thickness => 'not very'}
b = {:data => a, :reason => 'NA'}
也许你可以解释一下你遇到的问题。
答案 2 :(得分:2)
问题并不完全清楚,但我想你想要一个哈希列表(数组),对吗?
在这种情况下,您可以将它们放在一个数组中,就像Java中的列表一样:
a = {:a => 1, :b => 2}
b = {:c => 3, :d => 4}
list = [a, b]
您可以检索列表[0]和列表[1]
之类的哈希值答案 3 :(得分:1)
Ruby中的列表是数组。您可以使用Hash.to_a。
如果您尝试将散列a与散列b结合使用,则可以使用Hash.merge
编辑:如果您尝试将哈希值a插入哈希值b,则可以执行
b["Hash a"] = a;
答案 4 :(得分:1)
到目前为止,所有答案都是关于Hash in Hash,而不是Hash plus Hash,所以出于完整性的原因,我会对此表示赞同:
# 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中包含的任何键都将被覆盖。