0

1)Rubyコンソールでコーディングしたハッシュがあります

influencerHash

influencerHash.class => Hash

{"inf3"=>{"followingCount"=>256, "followersCount"=>80, "name"=>"Branislav Seslija", "score"=>10.4099998474121}, "inf2"=>{"followingCount"=>6, "followersCount"=>4, "name"=>"Greg Seslija", "score"=>29.8400001525879}, "inf1"=>{"followingCount"=>13, "followersCount"=>10, "name"=>"Amit Kumar", "score"=>30.6499996185303}}

2)ソートしましたが、ハッシュは配列に変換されます

sortHash = influencerHash.sort

sortHash.class => Array

[["inf1", {"followingCount"=>13, "followersCount"=>10, "name"=>"Amit Kumar", "score"=>30.6499996185303}], ["inf2", {"followingCount"=>6, "followersCount"=>4, "name"=>"Greg Seslija", "score"=>29.8400001525879}], ["inf3", {"followingCount"=>256, "followersCount"=>80, "name"=>"Branislav Seslija", "score"=>10.4099998474121}]]

3) 変換してハッシュに戻しましたが、並べ替えの結果が逆になっています (上記の配列と下のハッシュ結果を参照してください)。

sortHash = Hash[influencerHash.sort]

sortHash.class => Hash

{"inf3"=>{"followingCount"=>256, "followersCount"=>80, "name"=>"Branislav Seslija", "score"=>10.4099998474121}, "inf2"=>{"followingCount"=>6, "followersCount"=>4, "name"=>"Greg Seslija", "score"=>29.8400001525879}, "inf1"=>{"followingCount"=>13, "followersCount"=>10, "name"=>"Amit Kumar", "score"=>30.6499996185303}}

**

なぜこれが起こったのか、そして配列ではなくハッシュとして同じソートを取得するにはどうすればよいですか??

**

4

1 に答える 1

0

Ruby の 1.9 より前のバージョンを使用しているようです。ハッシュの要素に順序があるという概念はありません。

順序付きハッシュが本当に必要で、Ruby 1.9 にアップグレードできない場合は、古いバージョンの Ruby 用に順序付きハッシュを実装するライブラリを利用できます。(例: Hasheryなど、他にもたくさんあります。)

可能であれば、Ruby 1.9 にアップグレードすることをお勧めします。

于 2012-07-05T10:56:22.400 に答える