[#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:1359] Re: [MethodIndex] Bug and question

From: matz@... (Yukihiro Matsumoto)
Date: 1998-01-30 09:25:49 UTC
List: ruby-dev #1359
まつもと ゆきひろです

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

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

|Barのクラスメソッド < Fooのクラスメソッド < Barのクラスメソッド 
|<Objectの特異クラスのクラスメソッド < Class < Module < Object < Kernel
|
|の順番に継承していることは事実ですから, それが実際に明らかになるAPIが
|欲しいんですよね.

Rubyには既に自オブジェクトで定義されている特異メソッドを返す
Object#singleton_methodsってのがありますから,これでなんとか
なるんではと思います.

どのクラスでクラスメソッドが(最初に)定義されたかが必要であれ
ば,

  * Class#ancestorsで先祖を得る
  * Moduleを除く
  * 逆順にsingleton_methodsを得る
  * 先祖のsingleton_methodsから自分のsingleton_methodsを引き
    算する

で,得られます.もし,どのクラスで再定義されているかという情
報も必要でしたら,なんらかの拡張が必要ですね.

|rbc0> Baz.ancestors
|# 1
|[Baz, Foo, Bar, Object, Kernel]
|rbc0> class Baz
|rbc1>  include Bar
|rbc1> end
|Baz
|rbc0> Baz.ancestors
|# 2
|[Baz, Foo, Bar, Object, Kernel]
|
|こういう結果が出るんですが, 実際にこれが仕様なんですよね?

モジュールをincludeした時に継承階層の中で既にincludeされてい
ればなにもしません.そのつもりで,そうなってます.

                                まつもと ゆきひろ /:|)

In This Thread