まつもと ゆきひろです.

In message "[ruby-list:2003] Re: Hash of Hash/Array(Re: [Dist] Mutex module)"
    on 97/01/31, sinara / blade.nagaokaut.ac.jp <sinara / blade.nagaokaut.ac.jp> writes:
|原です。

|> つまりオブジェクトの同一性よりも値(それも登録された時の)が重要視されて
|> いるわけですね.
|
|私は、これについて全く違和感がないのですが、、、

私もです.だからこういう仕様なわけですけど.

|と、いうことは、ハッシュって「オブジェクト指向」に向いてないんじゃ
|ない?(と、話を振り出しに戻す。^^;)あるいは、ハッシュを2種類用
|意するとか。Hash_keiju, Hash_hara と。:-)

オブジェクトからオブジェクトへのマップはそれはそれは便利なも
のですから,向いていないということはないでしょう.さて,ここ
でひとつ問題をまとめておきましょう.

  * キーになるオブジェクトの一致判定(とhash値の計算)が内容に
    よるものだと内容が変化した時にキーから取り出せなくなる

  * そういう理由で一般的にはオブジェクトの同一性(ID)で一致判
    定にしたい.ただし,Floatなど内容が変化しないものについ
    ては内容で一致判定する

  * Stringは内容が変化しうるがこれは非常に不便なのでHash側で
    特別扱いしてcopy/freezeしている

で,これを前提として

  * Hash/Array/Structなどコンテナ系のオブジェクトの一致判定
    (とhash値の計算)は内容によるべきか,同一性によるべきか.

です.で,Hashを2種類用意するという提案は(すくなくともビルト
インクラスとしては)却下です.現在の実装(私の手元にあるもの)
は

  Hash    同一性
  Array   同一性
  Struct  内容

になっています.

|#誰も2000番を越えたことに言及しないな。

ちょうど「祝いの言葉」を出したところです.

                                        まつもと ゆきひろ /:|)