Как и у массивов, базовый метод обработки хешей это each()
(или алиас
each_pair()
). Он принимает на вход блок, в который передаются и ключ,
и значение:
data = {
clojure: 'dynamic',
go: 'static',
kotlin: 'static'
}
data.each do |key, value|
# логика
end
С его помощью можно выполнить любую задачу по преообразованию хеша, но в каждой конкретной ситуации лучше пользоваться специализированными функциями, которые позволяют сократить код и сделать его понятнее.
transform_values()
Этот метод позволяет преобразовать значения, оставив ключи. На выходе получается новый хеш:
new_data = data.transform_values { |value| value.upcase }
# { clojure: "DYNAMIC", go: "STATIC", kotlin: "STATIC" }
С помощью этого метода можно даже поменять тип значений и сделать их, например, массивами. Точно такой же метод есть и для ключей: transform_keys().
slice()
Слайс позволяет извлечь из хеша только его часть по указанным ключам:
data.slice(:clojure, :go)
# { clojure: "dynamic", go: "static" }
select()
Для более сложных ситуаций подходит метод select()
— он действует как
фильтр и извлекает из хеша его часть, которая соответствует нужным
условиям:
data.select { |key, value| value == 'static' }
# { go: "static", kotlin: "static" }
Остались вопросы? Задайте их в разделе «Обсуждение»
Вам ответят команда поддержки Хекслета или другие студенты
Для полного доступа к курсу нужен базовый план
Базовый план откроет полный доступ ко всем курсам, упражнениям и урокам Хекслета, проектам и пожизненный доступ к теории пройденных уроков. Подписку можно отменить в любой момент.