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