如何使用已具有值的键在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"]
我知道编写自己的方法很容易,但我只是想知道是否有内置方法。
答案 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"]}
>>
如果您希望[]=
始终附加到该值,那么您需要修补补丁。再一次,没有内置的工作方式。