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

ber*_*bas 8 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"]
Run Code Online (Sandbox Code Playgroud)

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

luc*_*tte 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"]
Run Code Online (Sandbox Code Playgroud)


Tra*_*vis 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"]}
>> 
Run Code Online (Sandbox Code Playgroud)

如果你想[]=总是附加值,那么你需要修补补丁.再一次,没有内置的工作方式.