4.12. Tworzenie hasza za pomocą iteratora inject

Problem

Mając daną tablicę, należy utworzyć hasz na podstawie jej zawartości.

Rozwiązanie

Jak już wspominaliśmy w „4.8. Sumowanie elementów tablicy”, tego typu problemy rozwiązuje się najbardziej naturalnie za pomocą iteratora Enumerable#inject. Iterator ten posiada jeden parametr — tworzony obiekt, w tym przypadku hasz — oraz blok kodowy specyfikujący akcję wykonywaną na każdym elemencie iterowanej kolekcji. Oto prosty przykład tworzenia hasza na podstawie tablicy par [<klucz>, <wartość> ]:

collection = [ [1, 'one'], [2, 'two'], [3, 'three'], [4, 'four'], [5, 'five'] ] collection.inject({}) do |hash, value| hash[value.first] = value.last hash end # => {5=>"five", 1=>"one", 2=>"two", ...

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.