Ответ 1
Это может подорвать цель хэша, не так ли?
Если вы хотите, чтобы ключ указывал на несколько элементов, укажите его на массив:
h = Hash.new { |h,k| h[k] = [] }
h[:foo] << :bar
h #=> {:foo=>[:bar]}
h[:foo] << :baz
h #=> {:foo=>[:bar, :baz]}
Можно ли создать хэш в Ruby, который позволяет дублировать ключи?
Я работаю в Ruby 1.9.2.
Это может подорвать цель хэша, не так ли?
Если вы хотите, чтобы ключ указывал на несколько элементов, укажите его на массив:
h = Hash.new { |h,k| h[k] = [] }
h[:foo] << :bar
h #=> {:foo=>[:bar]}
h[:foo] << :baz
h #=> {:foo=>[:bar, :baz]}
Два способа достижения повторяющихся ключей в хеше:
h1 = {}
h1.compare_by_identity
h1["a"] = 1
h1["a"] = 2
p h1 # => {"a"=>1, "a"=>2}
h2 = {}
a1 = [1,2,3]
a2 = [1,2]
h2[a1] = 1
h2[a2] = 2
a2 << 3
p h2 # => {[1, 2, 3]=>1, [1, 2, 3]=>2}