From: matz@... (Yukihiro Matsumoto) Date: 1997-01-09T17:39:37+09:00 Subject: [ruby-list:1659] Re: [Q] Use of '==', 'eql?' and 'hash' まつもと ゆきひろです. In message "[ruby-list:1658] Re: [Q] Use of '==', 'eql?' and 'hash'" on 97/01/09, sinara@blade.nagaokaut.ac.jp writes: | |原です。 |そんな方法があったとは! こういうやりかた(まず自分のメソッドで絞り込みやデータの取り 出しを行い,残りは相手のメソッドに任せてしまうようなやりかた) をダブルディスパッチと呼びます.オブジェクト指向では良く使わ れるやり方なので覚えておくと便利でしょう. |つまり Hash のキーの一致は | | a.hash == b.hash and a.eql? b | |で見ているのですね。hash の値で候補をしぼり、eql? で確認する |という感じでしょうか? そうです.もちろん適当に分散していないと効率が良くないのです が.極端な話,全部のオブジェクトに同じ値を返すhashの実装とい うのもありえるのですが,この場合,線形検索と同じかそれ以上に 効率が悪くなるでしょう. まつもと ゆきひろ /:|)