まつもと ゆきひろです

In message "[ruby-ext:01389] Re: new and initialize (Re: Ruby/Jed)"
    on 00/11/02, toyofuku / juice.or.jp <toyofuku / juice.or.jp> writes:

|  egrep -n 'NEWOBJ|OBJSETUP|CLONESETUP' *.c して確認しましたが
|NEWOBJ() と *SETUP() はほとんどペアで使うのですね。あからさま
|にはペアでないところは10箇所だけでした。(うち、rb_ary_s_new()
|と rb_str_s_new() の中の OBJSETUP() は必要ないような気もしますが)

上の2つはまったく無用というわけではないのです。クラスを設定
してるから。でも

  RBASIC(ary)->klass = klass

のような対応で十分って話はありますね。

|> T_OBJECTでない(たとえばT_DATAの)クラスを定義する時は、
|> newを再定義する必要があります。
|> # initializeがよばれる時にはすでにT_OBJECTなオブジェクトを生成し
|> # てしまった後だから。
|
|  ここよくわかりません。(ソース追わないと腑に落ちないかも)

デフォルトのnewはT_OBJECTなオブジェクトを作って、それに対し
てintializeメソッドを呼び出します。オブジェクトのタイプは普
通は生成時に指定しますから、initializeの中ではもうタイプが決
まってしまっていると言うことです。

|> |・クラス、インスタンスを作るサンプルプログラム(それだけ
|> |  で完結して実行できる数十行程度の)があると嬉しい。
|> 
|> ext/dbm.cとかじゃダメ?
| 
|  組み込みとしてのサンプルの方がよいので main があって
|そこからクラス定義してインスタンス作ってメソッド呼ぶと
|なんか出力されてというのがいいです。それとdbm という素材
|は私には身近にかんじられないのでなにか別の身近なものが
|よいです。

そうですか。豊福さんにとって身近なものってどういうものなんで
しょうね。
                                まつもと ゆきひろ /:|)