使用现有密钥在哈希对象(在Ruby中)中附加值?

时间:2012-02-10 19:58:26

标签: ruby

如何使用已具有值的键在Hash对象中追加值。所以举个例子 如果我有

>> my_hash = Hash.new
>> my_hash[:my_key] = "Value1"
# then append a value, lets say "Value2" to my hash, using that same key "my_key"
# so that it can be
>> my_hash[:my_key]
=> ["Value1", "Value2"]

我知道编写自己的方法很容易,但我只是想知道是否有内置方法。

2 个答案:

答案 0 :(得分:10)

我不知道我是否错过了您的观点,但您是否考虑过以下事项:

1.9.3 (main):0 > h={}
=> {}
1.9.3 (main):0 > h[:key] = []
=> []
1.9.3 (main):0 > h[:key] << "value1"
=> ["value1"]
1.9.3 (main):0 > h[:key] << "value2"
=> ["value1", "value2"]
1.9.3 (main):0 > h[:key]
=> ["value1", "value2"]

答案 1 :(得分:9)

如果我没记错的话,Ruby Way,第2版有关于多值哈希的整章。无论如何,这种行为没有内置。

但是,将块传递给Hash.new可以获得一些乐趣。

$ irb
>> h = Hash.new { |hash, key| hash[key] = [] }
=> {}
>> h[:a] << "Value1"
=> ["Value1"]
>> h[:a] << "Value2"
=> ["Value1", "Value2"]
>> h
=> {:a=>["Value1", "Value2"]}
>> 

如果您希望[]=始终附加到该值,那么您需要修补补丁。再一次,没有内置的工作方式。