From: pegacorn Date: 2007-08-21T09:23:42+09:00 Subject: [ruby-list:43882] Re: Hashへの生成順は保障されないのか? # どれにぶら下げるのが良いのかよくわからなくなってしまいましたが… From: Yukihiro Matsumoto Date: Tue, 21 Aug 2007 07:46:20 +0900 Message-Id: /~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > 実は私自身はHashの順序の保存については積極的に反対しているわ > けではないのです。しかし、 > > * 一般的にはHashの順序が保存されない > * どの順序が最適かは実は一意に決まらない(ような気がする) > * 順序の保存によってHashの効率が下がるのはうれしくない > > というような理由により手つかずです。 インターフェイスとアルゴリズム(実装)の話が、ごっちゃになっている ような気がします。 皆さんが共通して欲しがっているのは、Map とか Dictionary と 呼ばれている(?)ようなコンテナー(インターフェイス)では ないでしょうか? 例. foo[key] = value で、 ・順序 ・検索速度 等は用途によって要求が異なると思います。 従って、現在の Hash に手を加えるのではなく、 用途によって要求が異なる部分を指定できる柔軟なコンテナークラスを 作るのが良いと思います。 # C++ の本ですけど、Modern C++ Design の「ポリシーを基にしたクラス・デザイン」 # が参考になると思います。 -- pegacorn