0

sort私は通常、以下の例に示すように、非常に有名な方法を使用してルビーハッシュをソートします。しかし、文字列キーにアンダースコアが含まれていると、これはひどく失敗します。例:

h = {"b" => 1, "a" => 2}
Hash[h.sort]

ハッシュを完全にソートします。しかし、ハッシュが次のような場合

h = {"b_d" => 1, "a_v" => 2}

希望の並び順になりません。ここで注意すべき点はh.sort、ハッシュをソートしてEnumerableオブジェクトを生成することです。しかし、 を使用してオブジェクトを Hash に戻すとHash[h.sort]、ここで順序が失われます。より良いプロセスに関する提案があれば、役立つ可能性があります。

注:私は を使用してRuby 1.8.7いるため、OrderedHash私のレンズには があまりありません。

4

1 に答える 1

2

Ruby 1.8.7 では、変換を a に戻すとすぐにHash順序が失われます。Hashこれを機能させるには、バニラを取り除く必要がありEnumerableます。元に戻したものsortをできるだけ長く使用してみてください。

于 2012-10-02T13:00:44.370 に答える