5.8. Iterowanie po elementach hasza w kolejności ich wstawiania

Problem

Iterowanie po haszu udostępnia jego elementy w kolejności losowej, a ich sortowanie — za pomocą pośredniczącej tablicy — możliwe jest tylko wtedy, jeśli ich klucze lub wartości są wzajemnie porównywalne. Jeśli nie są, jedyną „wyróżnioną” kolejnością elementów może być kolejność, w jakiej zostały one wstawione do hasza.

Rozwiązanie

Klasa OrderedHash, zdefiniowana w bibliotece orderedhash, funkcjonuje jak normalny hasz, jednocześnie definiując kolejność swych elementów jako kolejność ich wstawienia.

require 'orderedhash' h = OrderedHash.new h[1] = 1 h["Druga"] = 2 h[:Trzecia] = 3 h.keys # => [1, "Druga", :Trzecia] h.values # => [1, 2, 3] h.each { |k,v| puts "#{k} ...

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.