ももちゃん@あるもにこすです.

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>