From: Masahiro Utsumi Date: 2007-08-21T08:14:22+09:00 Subject: [ruby-list:43881] Re: Hashへの生成順は保障されないのか? On 2007/08/21, at 0:35, しん wrote: > # 出遅れたので、レスすべきメールが判らなくなってしまったので、 > 手近なのに > > Hash で順序を保存してくれると嬉しいことはあります。 > もともと Key でソートされてるデータをHashに取りこ > んで > 辞書というか変換テーブルと言うかにしておき、 > 書き出しもKeyでソートしてだしたい という事は良くあ > ります。 私も順序を保存してもらえたらうれしいことはよくあります。 たとえばRailsなどでドロップダウンリストの要素を記述すると きに ITEMS = { "jp" => '日本', "us" => 'アメリカ', "other" => 'その他' }.freeze を引数として渡すような用途です。 しかしながら、HASHはダイナミックに増えたり減ったり、伸びた り縮んだり、 変わったりします。Hashの要素がHashだったりしますし、 内容がどんどん変化 しているものの順序を保持するのは実装するにあたりオーバーヘッドが 掛かりすぎるのではないでしょうか。順序が必要であれば配列の中に Hashなり 配列をいれるとか、オーバラップクラスを作って実装する今のやり方で なんとかやりくりできるのではないでしょうか。 もしオーバーヘッドがたいしたこと無ければ順序を保持してもらえたら うれしいです。 .freezeした場合に限り順序が保証されるという制限付きでもありがた いですね。 内海@ベルギー