我想将一些哈希对象保存到一个集合中(在Java世界中,将其视为列表)。我在线搜索,看看Ruby中是否有类似的数据结构,但没有发现。目前,我一直在努力保存哈希 a[] 进入哈希 b[], ,但一直在遇到问题,试图从哈希中获取数据 b[].

Ruby上是否有内置的收集数据结构?如果没有,是否可以在另一种哈希共同做法中保存哈希?

有帮助吗?

解决方案

如果要访问问题的哈希,请尝试:

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

其他提示

这应该没有任何问题。

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

也许您可以解释您遇到的问题。

这个问题并不完全清楚,但是我认为您想拥有哈希的列表(数组),对吗?

在这种情况下,您可以将它们放入一个数组中,就像Java中的列表:

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

您可以检索那些诸如列表[0]和列表[1

Ruby中的列表是数组。您可以使用 hash.to_a.

如果您试图将哈希A与哈希B组合在一起,则可以使用 hash.merge

编辑:如果您想将哈希A插入哈希B中,则可以做

b["Hash a"] = a;

到目前为止,这里的所有答案都是关于哈希(Hash)的哈希(Hash),而不是哈希(Hash Plus)的哈希(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中A中的任何键都会被覆盖。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top