From: nobu.nakada@... Date: 2004-06-15T20:04:22+09:00 Subject: [ruby-dev:23690] singleton class inherits the object's class. なかだです。 http://mput.dip.jp/mput/?date=20040615#p05 のエラーの件ですが、 特異クラスが特異オブジェクトのクラスを継承していると見なされて いるようです。 $ ruby-1.8 -v -e 'class X;end; x=X.new; class << x;p self < X; end' ruby 1.8.2 (2004-06-14) [i686-linux] true $ ruby-1.9 -v -e 'class X;end; x=X.new; class << x;p self < X; end' ruby 1.9.0 (2004-06-14) [i686-linux] true 特異クラスは特別扱いする必要があるんじゃないでしょうか。 * object.c (rb_class_inherited_p): singleton class inherits Class rather than its object's class. Index: object.c =================================================================== RCS file: /var/cvs/src/ruby/object.c,v retrieving revision 1.151 diff -u -2 -p -r1.151 object.c --- object.c 14 May 2004 16:39:15 -0000 1.151 +++ object.c 15 Jun 2004 10:58:38 -0000 @@ -1258,4 +1258,9 @@ rb_class_inherited_p(mod, arg) } + if (FL_TEST(mod, FL_SINGLETON)) { + if (RCLASS(mod)->m_tbl == RCLASS(arg)->m_tbl) + return Qtrue; + mod = RBASIC(mod)->klass; + } while (mod) { if (RCLASS(mod)->m_tbl == RCLASS(arg)->m_tbl) -- --- 僕の前にBugはない。 --- 僕の後ろにBugはできる。 中田 伸悦