Как мне изменить порядок в хэше?

#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 также принял его.