ももちゃん@あるもにこすです. From: matz / netlab.co.jp (Yukihiro Matsumoto) Subject: [ruby-list:4220] Re: Mini ML Program Date: Tue, 9 Sep 97 11:37:11 +0900 > まつもと ゆきひろです > > |きくたにです。 > | > |> class CMail > |> # コンストラクタ > |> def CMail.new(f) > |(snip) > |> end > > |> def CMailSpool.new(d) > |> return super(d) > |> end > > |のように、あらわにコンストラクタを定義するメリットは何なのでしょうか? > |私は initialize が普通の意味でのコンストラクタだと思っていたのですが。 > > 前者はnewの引数によってsuper(スーパークラスの同名のメソッド) > に与える引数を変えるためです.これはfrom.rbの中に同じような > コードがありますね.後者はそのままsuperを呼んでますから,意 > 味は無いですね.たぶん,前者にひきずられたんでしょう. そのとおりです (^^;).というか,前者もあまり考えてやったもので はなくて,サンプルで入っていた mailread.rb を修正したものです. で,他のコードはそれを見ながら書いたのでそうなってる,と. initialize って,m = CMail とかやると,暗黙で呼ばれるんですか? 私は明示的に m = CMail.new とか書いてましたが... -- Yasunari Momoi <conan / Armonicos.co.jp>, Armonicos Corp. WIDE: <conan / wide.ad.jp>, JLUG: <conan / linux.or.jp>