[#1320] [MethodIndex] Bug and question — keiju@... (Keiju ISHITSUKA)

けいじゅ@日本ラショナルソフトウェアです.

32 messages 1998/01/23
[#1321] Re: [MethodIndex] Bug and question — matz@... (Yukihiro Matsumoto) 1998/01/23

まつもと ゆきひろです

[#1323] Re: [MethodIndex] Bug and question — keiju@... (Keiju ISHITSUKA) 1998/01/23

けいじゅ@日本ラショナルソフトウェアです.

[#1332] Re: [MethodIndex] Bug and question — keiju@... (Keiju ISHITSUKA) 1998/01/27

けいじゅ@日本ラショナルソフトウェアです.

[#1333] Re: [MethodIndex] Bug and question — matz@... (Yukihiro Matsumoto) 1998/01/27

まつもと ゆきひろです

[#1334] Re: [MethodIndex] Bug and question — keiju@... (石塚圭樹 ) 1998/01/27

けいじゅ@日本ラショナルソフトウェアです.

[#1351] Re: [MethodIndex] Bug and question — keiju@... (石塚圭樹 ) 1998/01/29

けいじゅ@日本ラショナルソフトウェアです.

[#1353] Re: [MethodIndex] Bug and question — matz@... (Yukihiro Matsumoto) 1998/01/29

まつもと ゆきひろです

[#1354] Re: [MethodIndex] Bug and question — keiju@... (石塚圭樹 ) 1998/01/29

けいじゅ@日本ラショナルソフトウェアです.

[#1355] Re: [MethodIndex] Bug and question — matz@... (Yukihiro Matsumoto) 1998/01/30

まつもと ゆきひろです

[ruby-dev:1353] Re: [MethodIndex] Bug and question

From: matz@... (Yukihiro Matsumoto)
Date: 1998-01-29 08:13:11 UTC
List: ruby-dev #1353
まつもと ゆきひろです

In message "[ruby-dev:1351] Re: [MethodIndex] Bug and question"
    on 98/01/29, 石塚圭樹 <keiju@rational.com> writes:

|けいじゅ@日本ラショナルソフトウェアです.

|4.2 クラス(モジュール)メソッドについて

|そこで, ancestorsに関する質問ですが...

|#1, #2が違うのは良いんですが, なぜ #2, #3は異なっているのでしょう?
|
|それに, 最初の3,4個のClassは実際には何なんでしょうね? 気分的には:
|
|  Barの特異クラス < Fooの特異クラス < Objectの特異クラス <
|    Class < Module < Object < Kernel
|
|となるべきかなと思うんですが?

パッチの追加があります.

|# そうすると, Bar.type.ancestorsは1つクラスが少ない?  でも, 良く考えた
|# らBar.typeが変なのかな? Classそのものを返すべきじゃないかと思うんで
|# すが? 今は特異クラス返していますよね?

obj_typeにバグがありましたが,typeは特異でないクラスを返す仕
様になってます.

|4.3 つぎに, incetance_of?に関する質問ですが.
|
|rbc0> Bar.instance_of?(Bar.type.ancestors[0])
|false
|というけっががでます. なんとなく直観と合わないんですが?

instance_of?は「そのクラスのインスタンスか?」という述語であ
り,「そのクラスまたはそのサブクラスのインスタンスか?」とい
う述語ではありません.そういう目的にはkind_of?を使って下さい.

あとは,先のパッチとこのパッチでまともになると思います.

diff -u -1 -r1.1.1.2.2.2 class.c
--- class.c	1998/01/22 08:32:47	1.1.1.2.2.2
+++ class.c	1998/01/29 08:02:33
@@ -269,2 +269,4 @@
     for (p = mod; p; p = RCLASS(p)->super) {
+	if (FL_TEST(p, FL_SINGLETON))
+	    continue;
 	if (BUILTIN_TYPE(p) == T_ICLASS) {

In This Thread