なかだです。

At Fri, 24 Dec 1999 10:40:55 +0900,
Shigeo Kobayashi <shigeo / tinyforest.gr.jp> wrote:
> 拡張ライブラリのサブクラスについて教えてください。
> 以下のコードを実行すると、
>     B s=c:\tmp\t
>     A s=c:\tmp\t
> と、なります。ところが
>  class A # < SDBM ==> class A< SDBM
> とすると、SDBM::newが実行されるだけで、AとBの
> initializeは実行されないようです。
> 拡張ライブラリクラスを継承するサブクラスの
> initializeは実行できないのでしょうか?

  デフォルトでは実行しません。

class A < SDBM
  def A.new(*args)
    super.instance_eval {initialize(*args); self}
  end
end

を加えてみてください。この例では SDBM::new と A#initialize に同じ
引数が渡ります。別にしたければ

  def A.new(path, *args)
    super(path).instance_eval {initialize(*args); self}
  end

こんな感じで。

-- 
そうだ 強気に ちょっと インチキに☆彡
    中田 "Bugるくらいがちょうどいいかも;-)" 伸悦