From: matz@... (Yukihiro Matsumoto) Date: 1997-01-30T14:34:35+09:00 Subject: [ruby-list:1971] Re: [Dist] Mutex module まつもと ゆきひろです. In message "[ruby-list:1969] Re: [Dist] Mutex module" on 97/01/30, 石塚圭樹 writes: |けいじゅ@SHLジャパンです. |でも, Arrayがベクトルと考えられるという意見は, 私も賛成しなくもないで |す. |というわけで, ハッシュの比較は内容で比較するというのは原則的にそれほど |文句はありません. | |ただ, この場合, HashもArrayと概念的にはあまり違わないわけですから内容 |で比較するようにすべきですね. むむむ…,結局どういうのが望ましいんですかね.私としては皆さ んがもっとも使いやすい機能を提供できればよいんです.もちろん 矛盾するニーズもあるので調整する必要はありますけど. まず最初に確認すべきことは,内容で一致を取る場合,キーオブジェ クトの内容が変更された場合にはそのキーは取り出せなくなる(要 素数としてはカウントされるし,イテレートもされるが,キーから は取り出せないし削除もできない),ということです.これはドキュ メントにも(ある程度)書いてあります. その意味で,中身の変更されうるオブジェクトで内容をキーにする のは危険です.文字列だけは特別扱いしてこの問題を回避していま す(キーにされた文字列をコピーして freeze している). ですから,本当はStructも(内容が変更できるので),内容で一致を 取るのは危ない部分もありますね. これを踏まえて,以下のいずれが望ましいでしょう? (a) Hash/Arrayともidで一致を取る (b) Hash/Arrayとも内容で一致を取る (c) Hashはidで一致を取る/Arrayは内容で一致を取る (d) Hashは内容で一致を取る/Arrayはidで一致を取る (e) 上記以外のなにか(ってなに?) HashやArrayはいろいろな使われ方をするので難しいですけどね. まつもと ゆきひろ /:|)