5.6. Kojarzenie wielu wartości z tym samym kluczem

Problem

Chcielibyśmy stworzyć hasz, w którym z pojedynczym kluczem można będzie skojarzyć więcej niż jedną wartość.

Rozwiązanie

Tworzymy hasz, w którym nieistniejącemu kluczowi przypisywana będzie (dynamicznie) wartość domyślna w postaci pustej tablicy. Potem można już dołączać (za pomocą operatora <<) kolejne wartości do tablic skojarzonych z poszczególnymi kluczami:

hash = Hash.new { |hash, key| hash[key] = [] }

raw_data = [ [1, 'a'], [1, 'b'], [1, 'c'],
             [2, 'a'], [2, ['b', 'c']],
             [3, 'c'] ]
raw_data.each { |x,y| hash[x] << y }
hash
# => {1=>["a", "b", "c"], 2=>["a", ["b", "c"]], 3=>["c"]}

Dyskusja

Jeden klucz może być mapowany tylko w jedną wartość, lecz wartość ta może być ...

Get Ruby. Receptury now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.