[#43353] 丸数字の文字コード変換 — Masuda Yoshihisa <sacong@...>
マスダといいます。
10 messages
2007/04/02
[#43363] 特定のmoduleに属しているかの判別 — "西塔伸一郎" <sinsaihy@...>
初めまして
5 messages
2007/04/04
[#43369] dRuby に CGI を渡す→script_uri が上手く取得出来ない — 石井 大海 <banzaida@...>
こんばんは、konnです。
10 messages
2007/04/05
[#43373] Re: dRuby に CGI を渡す→script_uri が上手く取得出来ない
— Masatoshi SEKI <m_seki@...>
2007/04/06
咳といいます。
[#43374] Re: dRuby に CGI を渡す→script_uri が上手く取得出来ない
— 石井 大海 <banzaida@...>
2007/04/06
こんにちは、konnです。
[#43376] Re: dRuby に CGI を渡す→script_uri が上手く取得出来ない
— Masatoshi SEKI <m_seki@...>
2007/04/06
咳といいます。
[#43382] VB6からrubyを呼び出す際の問題について — "takumi iino" <trot.thunder@...>
はじめまして。飯野と申します。
11 messages
2007/04/06
[#43383] Re: VB6からrubyを呼び出す際の問題について
— rubikitch@...
2007/04/06
From: "takumi iino" <trot.thunder@gmail.com>
[#43384] Re: VB6からrubyを呼び出す際の問題について
— "takumi iino" <trot.thunder@...>
2007/04/06
飯野です。
[#43385] Re: VB6からrubyを呼び出す際の問題について
— "takumi iino" <trot.thunder@...>
2007/04/06
飯野です。
[#43407] オブジェクトのインスタンス変数名の取得 — pegacorn <subscriber.jp@...>
こんにちは。
8 messages
2007/04/10
[#43408] Re: オブジェクトのインスタンス変数名の取得
— Yukihiro Matsumoto <matz@...>
2007/04/10
まつもと ゆきひろです
[#43409] Re: オブジェクトのインスタンス変数名の取得
— pegacorn <subscriber.jp@...>
2007/04/10
07/04/10 に Yukihiro Matsumoto <matz@ruby-lang.org> さんは書きました:
[#43410] Re: オブジェクトのインスタンス変数名の取得
— Yukihiro Matsumoto <matz@...>
2007/04/10
まつもと ゆきひろです
[#43415] Gtk::TreeView でドラッグ — Takeshi Honda <moecho21@...>
お世話になります。
5 messages
2007/04/10
[#43428] ClassのクラスはClass自身でない? (RHGの疑問点) — Yoshino <ysnmin@...>
初めまして。吉野と言います。
5 messages
2007/04/12
[#43435] ruby から C/C++ の利用法 — ohrsts@...
小原と申します。
6 messages
2007/04/14
[#43450] Fwd: 「オープンソースカンファレンス2007 Hokkaido」開催のお知らせ — "SHIMADA Koji" <snoozer.05@...>
しまだ@Ruby札幌です。
4 messages
2007/04/20
[ruby-list:43441] Re: ClassのクラスはClass自身でない? (RHGの疑問点)
From:
"Makoto Inada" <mak@...>
Date:
2007-04-16 14:53:32 UTC
List:
ruby-list #43441
稲田です。
Revision 2887 の変更とは class.c の rb_make_metaclass() に対する変更のことですよね。
Class の特異クラスのクラスは、この変更に関わらず Class の特異クラス自身だと思います。
Revision 2887 以前、例えば Rev 2886 では、class.c の 151 行目で
RBASIC(klass)->klass = klass;
と、直接自身が代入されているので、klass (ここでは Class のクラス) のクラスが klass 自身であることは明確です。
1.8.6 のコードはもっと複雑で、
163: VALUE metasuper = RBASIC(rb_class_real(super))->klass;
165: /* metaclass of a superclass may be NULL at boot time */
166: if (metasuper) {
167: RBASIC(klass)->klass = metasuper;
168:}
klass (ここでは Class のクラス) のクラスには metasuper が代入されています。metasuper は
RBASIC(rb_class_real(super))->klass なんですが、これがどのクラスをさしているかというと、
1. super は Module のクラス(仮にAと呼びます)
2. rb_class_real(A) は A の真のクラス(特異クラスを含めない)を返す。Module のクラスの真のクラスは Class。(B)
3. RBASIC(B)->klass は B のクラスを表す。B は Class だから、これは Class のクラス。
4. Class のクラスは、rb_make_metaclass() 関数内で klass に初期化されている。
5. したがって klass (Class のクラス) のクラスは klass 自身になる。
クラスと Class と klass がでてきたり、Class がオブジェクトだったり、特異クラスと "real"
クラスがあったり、このあたりは本当にややこしいです。
On 4/16/07, Yoshino <ysnmin@gmail.com> wrote:
>
> 吉野です。
>
> 稲田さん、ご返信ありがとうございます。
>
> >Class のクラスは Module のクラスをスーパークラスに持つ特異クラスです。
>
> RHGの該当部分の記述が、
> ClassのクラスはClass自身
> となっているため、今回は特異クラスを無視していました。
>
> 特異クラスを考慮に入れるなら、稲田さんの仰る通り、「Classのク
> ラスは特異クラス」となるはずですので。
>
> 特異クラス生成の関数は、RHG対象の1.7.3rubyと最新の1.8.6rubyで
> 多少修正されていますが、やはり「ClassのクラスはClassClass、
> ClassClassのクラスは ClassClassClass」という文章の疑問を解くに
> は至りませんでした。
>
> # Classの特異クラスに関してだけ言及すると、
> # 1.7.3ruby
> # * Classの特異クラスのクラスは、特異クラス自身
> # 1.8.6ruby
> # * Classの特異クラスのクラスは、Class (= rb_cClass)
> # と変更されたようです。(Revision 2887 の変更)
>
> もしかしたら何か初歩的な勘違いをしているかも知れないので、もう
> 一度RHGとrubyソースを読み直してみたいと思います。
>
> --
> Yoshino <ysnmin@gmail.com>
>
>