2

次のように、複雑な構造を持つルビーのハッシュがあります。

something = {}
something[1488343493] = { :type => 'tag', :name => 'v1.2', :sha => 'a66fd116e454378794d24c41c193d385be37436f'}
something[1488288253] = { :type => 'pull', :number => '469', :sha => '190ed76e30a5fa7d357e8bfb78adfa687a673635', :title => "Consistent file uploads "}
something[1468674242] = { :type => 'tag', :name => 'v1.1', :sha => '2cf4549d0181ad1d60fbd3bbe132b599a14a8965'}
something[1488457772] = { :type => 'pull', :number => '476', :sha => '5f51fa23ea79bd9b89703cb93a5e38a0f0a338bb', :title => "Extract i18n strings in modals/* "}
something[1488288044] = { :type => 'pull', :number => '470', :sha => 'ab98ec3bf7cbe04f11a17d30ed07e5323b45d5df', :title => "Stop copy & clickthrough from list summaries "}

これには基本的に、Github タグとマージされたプル リクエストのリストが含まれています。.sortこれを次のように簡単に並べ替えることができます。

something.sort.each do | key, value | # sorts perfectly fine
  p "#{key} #{value[:type]} #{value[:sha]}"
end

しかし、ソートされたハッシュではなく、ハッシュが必要です。そして、私はそれをまったく元に戻すことができないことに完全に困惑しています。それを試みると、ハッシュ.reverseが得られます:NoMethodError

something.reverse.each do | key, value | # undefined method `reverse' for #<Hash:0x0> (NoMethodError)
  p "#{key} #{value[:type]} #{value[:sha]}"
end

しようとしても何もしreverse_eachません:

something.reverse_each do | key, value | # does not reverse at all
  p "#{key} #{value[:type]} #{value[:sha]}"
end

配列への変換と逆変換にも同じことが当てはまり、何もしません:

gnihtemos = something.to_a.reverse.to_h # does not reverse at all
gnihtemos.each do | key, value |
  p "#{key} #{value[:type]} #{value[:sha]}"
end

gnihtemos = Hash[something.to_a.reverse] # does not reverse at all
gnihtemos.each do | key, value |
  p "#{key} #{value[:type]} #{value[:sha]}"
end

オプションが不足しています。ルビーを使用して2.4.0p0います。逆にするために他に何ができますsomethingか?

4

4 に答える 4