From: nobu.nakada@... Date: 2003-03-10T01:47:37+09:00 Subject: [ruby-dev:19781] Re: File.open with block calls IO#close even if it is overriden なかだです。 At Sun, 9 Mar 2003 23:43:18 +0900, TOYOFUKU Chikanobu wrote: > >|| 良いかどうかはわかりませんが、素朴に思いつくのは。 > >|| Fixnum#<=> の再定義を監視しておいて、 > >|のような方法はダメですか。 > > > > なんか苦労の割に得られるものが少ないので、あんまり採用したく > > if (FIXNUM_P(*a)) { > if (FIXNUM_P(*b) && Fixnumのcmpデフォルトのままフラグ) return *a - *b; > } > else if (TYPE(*a) == T_STRING && TYPE(*b) == T_STRING && Stringのcmpデフォルトのままフラグ) { > return rb_str_cmp(*a, *b); > } > ぐらいならどうですか。 こういうのを考えてみました。今余裕がないので実装はそのうち時間 ができたら。 * Cからの定義用の新しいNODEを追加 * 関数ポインタではなく関数ポインタへのポインタ(*funcptr)を渡す * このNODEで定義されたメソッドを再定義するときは、*funcptrを rb_call()などを使って置き換える -- --- 僕の前にBugはない。 --- 僕の後ろにBugはできる。 中田 伸悦