原です。 > まつもと ゆきひろです. > |原です。 > > |そんな方法があったとは! > > こういうやりかた(まず自分のメソッドで絞り込みやデータの取り > 出しを行い,残りは相手のメソッドに任せてしまうようなやりかた) > をダブルディスパッチと呼びます.オブジェクト指向では良く使わ > れるやり方なので覚えておくと便利でしょう. 勉強になるなあ。 > |つまり Hash のキーの一致は > | > | a.hash == b.hash and a.eql? b > | > |で見ているのですね。hash の値で候補をしぼり、eql? で確認する > |という感じでしょうか? > > そうです.もちろん適当に分散していないと効率が良くないのです > が.極端な話,全部のオブジェクトに同じ値を返すhashの実装とい > うのもありえるのですが,この場合,線形検索と同じかそれ以上に > 効率が悪くなるでしょう. 大変よくわかりました。このメカニズムはなかなか楽しいですね。 hash とる値は Bignum でしょうか?どうも def hash @a.hash ^ @b.hash end として Segmentation fault がしばしば起こっています。再現性の あるスクリプトをいま探しています。