From: matz@... (Yukihiro Matsumoto) Date: 1997-01-29T17:36:33+09:00 Subject: [ruby-list:1940] Re: [Dist] Mutex module まつもと ゆきひろです. In message "[ruby-list:1938] Re: [Dist] Mutex module" on 97/01/29, 石塚圭樹 writes: |けいじゅ@SHLジャパンです. |ハッシュを2回引きたくない... でも, そういえば | |if !(value = hash.delete(key)).nil? # 原さんのメイル対応(^^;; | あった場合の処理 |end |後処理 | |でも良いような... | |# nil?の反対演算しはないですよね? unless (value = hash.delete(key).nil? ... end ではいかが? |すくなくともArrayは戻した方が良いでしょう. それで嬉しい人はあまりいな |いと思いますし... Structはどうかなあ... メンバが固定だからこのままでも |良いような, 同一性の方が良いような... Arrayはそうですかねえ.実際に使う例がないとどちらか決めかね ますね.うーん. |># なぜって同一性は処理系によって保証されていないので,それに |># 依存するようなプログラムを書くためのハッシュは要らないはず | |え? 保証されていない?? あるオブジェクトのidが変わることがあるのですか??? |そんなことはないですよね? どういう意味だろう? 「a == b where a.equal? b」は言語仕様として保証されますが, それ以上は実装によって決まると言う意味です.たとえば現在の rubyの実装では同じ値を持つFixnumはいつもequal?ですが,将来そ うでないrubyの処理系が出て来るかも知れません. よって同一性によるHashを使ったプログラムは処理系によって動作 が異なる可能性があります.逆に動作が異ならない範囲内で使うな ら(若干速いだろうと言うことを除いては)Hashで等価なプログラム が記述できるはずです. |# includeした時には何かhook関数が呼ばれるんでしたっけ? 呼ばれません.includeはもっと静的だろうと思ったからです. まつもと ゆきひろ /:|)