小林です。

----- Original Message -----
送信者 : Minero Aoki <aamine / dp.u-netsurf.ne.jp>
件名 : [ruby-dev:8720] Re: initialization & super


> あおきです。
こんばんわ、よろしくお願い致します。

>
> md5init.c の例というのは md5_clone() のことだと思いますが、
はい。

> これは MD5#clone の定義ですから、
> 引数の self は MD5 クラスのインスタンスです。
> Data_Wrap... で欲しいのはクラスオブジェクト MD5 ですから、
> 必要なのは CLASS_OF(self) です。
>
> 一方、sdbm の例というのは fsdbm_s_open のことだと思いますが、
はい、そうです。

> これは SDBM.open の定義ですから、
> 引数の klass(=self) はクラスオブジェクト SDBM です。
つまり、このとき(open | new)のklassは、インスタンスではない
ということですね?
私は、selfはnewで作成されたインスタンスだと思っていました。

> このとき欲しいのはクラスオブジェクト SDBM ですから、必要なのは
> klass そのままです。( CLASS_OF(klass)はオブジェクト Class )
>
> 小林さんの BigFloat の場合だと、定義しているのは BigFloat.new
> ですから、self はクラスオブジェクト BigFloat です。
> つまり、self そのままが正解です。

いつもながら、本当に色々な方から直ちに、しかも適切に回答が
頂けるので、ありがたいやら、穴があったら入りたいやらです。
暗中模索のなか、やっと「次の仕事にRubyを使用する。」と大きな
顔で宣言できそうです(あ、勘違いしないでください。回りの人間は
殆どRubyの経験が無いので、分からないことがあれば「私に聞け」
と言えそうだという事です (^^;; )。そんなわけで、多分今後も登場
するとは思いますが、よろしくお付き合いください。

ありがとうございました。

小林 茂雄
E-Mail: shigeo / tinyforest.gr.jp
Home Page: http://www.tinyforest.gr.jp