[#1371] Re: [ruby-list:6104] Re: パースエラー等の嵐を Dos窓で受けるには ...? — Masao Kanemitsu <masao-k@...>
<9801290711.AA10183@pbsun10.pb.ascii.co.jp> の、
[#1381] bound method — shugo@... (Shugo Maeda)
前田です。
まつもと ゆきひろです
けいじゅ@日本ラショナルソフトウェアです.
まつもと ゆきひろです
けいじゅ@日本ラショナルソフトウェアです.
まつもと ゆきひろです
けいじゅ@日本ラショナルソフトウェアです.
まつもと ゆきひろです
前田です。
けいじゅ@日本ラショナルソフトウェアです.
まつもと ゆきひろです
[#1386] downcase — Shin-ichiro HARA <sinara@...>
原です。
原です。
[#1410] GD — Masao Kanemitsu <masao-k@...>
まつもと ゆきひろです
わたなべです.
<199802100623.PAA03533@eban.ase.ptg.sony.co.jp> の、
わたなべです.
<199802100733.QAA04028@eban.ase.ptg.sony.co.jp> の、
わたなべです.
<199802100757.QAA04212@eban.ase.ptg.sony.co.jp> の、
わたなべです.
<199802100952.SAA04346@eban.ase.ptg.sony.co.jp> の、
わたなべです.
<199802120449.NAA00398@eban.ase.ptg.sony.co.jp> の、
わたなべです.
<199802120600.PAA00591@eban.ase.ptg.sony.co.jp> の、
わたなべです.
<199802120717.QAA00774@eban.ase.ptg.sony.co.jp> の、
> Windows 95では、GDだけロードエラーに。(3台で確認)
[#1412] GD — Masao Kanemitsu <masao-k@...>
まつもと ゆきひろです
<199802100636.PAA16869@picachu.netlab.co.jp> の、
[#1468] tcltk library — Masao Kanemitsu <masao-k@...>
[#1481] tkmandel — Masao Kanemitsu <masao-k@...>
[#1483] 拡張モジュール on Windows — Masao Kanemitsu <masao-k@...>
わたなべです.
[#1501] Re: 拡張モジュールon Windows — Masao Kanemitsu <masao-k@...>
> <199802180824.RAA20375@eban.ase.ptg.sony.co.jp> の、
[#1505] final.rb:35: [BUG] bug in variable assignment — shugo@... (Shugo Maeda)
前田です。
[#1506] [BUG] instance_of? — keiju@... (Keiju ISHITSUKA)
けいじゅ@日本ラショナルソフトウェアです.
[#1520] SizedQueue and some question — keiju@... (Keiju ISHITSUKA)
けいじゅ@日本ラショナルソフトウェアです.
まつもと ゆきひろです
けいじゅ@日本ラショナルソフトウェアです.
まつもと ゆきひろです
[#1528] Mutex#unlock — shugo@... (Shugo Maeda)
前田です。
[ruby-dev:1370] Re: [MethodIndex] Bug and question
けいじゅ@日本ラショナルソフトウェアです.
In [ruby-dev :01367 ] the message: "[ruby-dev:1367] Re: [MethodIndex]
Bug and question ", on Feb/02 19:01(JST) Yukihiro Matsumoto writes:
>まつもと ゆきひろです
>|>それであってます.問題は,あるクラスに対してどのモジュールが
>|>includeされているかどうかは(正確にはどのモジュールがextendさ
>|>れているか)はわかっても,それが直接includeされたのか,先祖に
>|>includeされたのかという情報は残ってないことです.
>|でも, ancestorsはちゃんとincludeしたモジュールの継承の順番が正しくなっ
>|ているようですが?
>順番は保存されています(結果的にlinked listになっている).が,
>それだけです.どこでという情報をどこに格納するかは難しいです
>ねえ.
ん? (今回は)順番さえわかれば満足なんですけど. でも, これは特異クラスの
順番ですね.
結局言わんとしたことは, 特異クラスから元のクラスへの参照は保存されてい
ないて言う話だったんですかね??
>|つまり, 今迄通りで我慢してねってことですね(;_;
>
>なんか,良いアイディアがあれば良いのですが.
>
>klass.ancestors
>
>と
>
>class <<klass
> ancestors
>end
# エラーですよ!!
# それはともかく, 特異クラスの継承列を返してもらえれば満足なんですが...
>を活用すればある程度の情報は得られるのかなあ.
全く不可能ではないとおもうんですが, めんどくさいですよね...
こんな感じですか:
class Class
def class_ancestors
m_sets = {}
a_serials = Class.ancestors.reverse.collect{|a|
if a.instance_of?(Module)
m_sets[a] = a
end
[a]
}
for cls in ancestors.find_all{|m| ! m.instance_of?(Module)}.reverse
ancs = [cls]
for e in eval("class << cls; included_modules; end")
for a in e.ancestors
if !m_sets.include?(a)
ancs.push a
m_sets[a] = cls
end
end
end
a_serials.push ancs
end
a_serials.reverse!
end
end
rbc0> class C3;end
rbc0> class C2 < C3;end
rbc0> class C1 < C2; end
rbc0> module M3;end
rbc0> module M2; include M3; end
rbc0> module M1; include M2; end
rbc0> C3.extend M3
rbc0> C2.extend M2
rbc0> C1.extend M1
rbc0> C1.class_ancestors
[[C1, M1], [C2, M2], [C3, M3], [Object], [Class], [Module], [Object], [Kernel]]
結果の解釈は, 要素の一番目は祖先で継承しているクラス/モジュールです. 2
番名工の要素は一番目の要素をextendしているモジュールお呼びその祖先を意
味しているとしました.
でも, 問題がありますね. rubyの(モジュールの)継承はincludeした順番に依
存しているので:
rbc0> class X1; end
rbc0> class X2 < X1;end
rbc0> class X2; include M3;end
rbc0> class X2; extend M3; end
rbc0> class X1; include M3; end
rbc0> class X1; extend M3; end
この場合, ancestorsとclass_ancestorsは同じ順番にならないといけないので
すが:
rbc0> X2.ancestors
[X2, M3, X1, M3, Object, Kernel]
rbc0> X2.class_ancestors
[[X2], [X1, M3], [Object], [Class], [Module], [Object], [Kernel]]
となって, しまいますね. 本来ならば:
[[X2, M3], [X1, M3], [Object], [Class], [Module], [Object], [Kernel]]
にならなくてはいけないのですが...
やはり, 今のAPIだけでは完全には継承列を再現することはできないみたいで
すね.
やはり:
1. 直接extendしているモジュールを調べるAPI
2. class_ancestors見たいなAPI
のいずれかををruby側で用意してもらえないと...
__
................................石塚 圭樹@日本ラショナルソフトェア...
----------------------------------->> e-mail: keiju@rational.com <<---