#ruby #hash
#ruby #хэш
Вопрос:
У меня есть следующий хэш:
{"match"=>0, "reach"=>1, "safe"=>2, "undecided"=>3}
Я хочу изменить порядок, как показано ниже:
{"reach"=>1, "match"=>0, "safe"=>2, "undecided"=>3}
Какое наиболее эффективное решение для этого?
Комментарии:
1. Зачем вам нужен этот упорядоченный хэш? Я спрашиваю, потому что, теоретически, хэш — это структура данных, которая не имеет определенного порядка. Хотя в реализации хэша Ruby пары ключ / значение упорядочены в том порядке, в котором они были добавлены в хэш.
Ответ №1:
{"match"=>0, "reach"=>1, "safe"=>2, "undecided"=>3}
.slice("reach", "match", "safe", "undecided")
# => {"reach"=>1, "match"=>0, "safe"=>2, "undecided"=>3}
Комментарии:
1. sawa любит демонстрировать новые методы Ruby, которые я приветствую за их образовательную ценность. Hash #slice , который здесь идеально подходит, дебютировал в версии 2.5.5. Я забыл об этом и оценил напоминание.
2. Это то, что ActiveSupport внедрил в Rails, но приятно видеть, что core Ruby также принял его.