[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した場合に限り順序が保証されるという制限付きでもありがた
いですね。
内海@ベルギー