В Ruby Way, 2nd Edition, если я правильно помню, есть целая глава о многозначных хэшах. Независимо от этого, нет встроенного для этого поведения.
Однако вы можете повеселиться, передав блок в Hash.new
.
$ irb
>> h = Hash.new { |hash, key| hash[key] = [] }
=> {}
>> h[:a] << "Value1"
=> ["Value1"]
>> h[:a] << "Value2"
=> ["Value1", "Value2"]
>> h
=> {:a=>["Value1", "Value2"]}
>>
Если вы хотите, чтобы []=
всегда добавлялось к значению, то вам нужно обезьяньим патчем. Опять же, ничего не встроено, чтобы работать таким образом.