From: Minero A. <aa...@mx...> - 2002-08-27 14:02:43
|
サボってばかりの あおきです。 In mail "Re: [ruby-gnome-users-ja] NUM2INT vs SYM2ID" Masao Mutoh <mu...@hi...> wrote: > むとうです。 > > オブジェクトで無いものをArrayに入れるのは、 > > GCとの絡みもあるし、気持悪いと思います。 > > ID2SYMしてSymbolを入れておくのがやっぱり無難なんじゃないかなぁ。 > > よくわかっていないのですが(っていつものことか(^^;)) > IDってただのunsigned long値ですよね。 > > ID2SYMしても、所詮、数値を書き換えてるだけですよね? > > これらってGCとの絡みが出て来るんでしょうか? ID は Ruby オブジェクトでないのでまずいです。4 の倍数の VALUE はポインタとして扱われるので rb_gc_mark で落ちます。 ちなみに VALUE は以下のようにマップされてます。 false 0 true 2 nil 4 Fixnum 奇数 Symbol 256 の倍数 + 14 ポインタ 4 の倍数 あとは秘密の値 Qundef (=6) を追加すれば VALUE のパターンは 尽くせているはず。 ------------------------------------------------------------------- 青木峰郎 |