なかだです。

At Thu, 16 Nov 2000 17:43:45 +0900
"岡本" <okamoto / cse.co.jp> wrote:
> もともと、一旦作ったオブジェクトを initialize で再初期化しよう、という思い付きから
> 手をつけまして、
> 
> foo = Foo.new(50)
> .....
> foo.initialize(5)
> ......
> foo.initialize
> 
> のように使って、引数が渡せば対応するメンバの値をその値で更新し、
> 引数を省略すればそのメンバの値を変えないようにしよう、と考えていました。
> 「引数がなければ」というのが頭にあって、明示的にnilを与えた時のことを考えて
> なかったですね。

  initialize は private なので呼べないとは思いますが。

> ようは呼ばれるメソッドのローカルなスコープの変数を使った任意の式が使えるんですね。
> 今試してみたら
> def foo( arg = ( /str(ing)/=~"string"; $1) )
>     p arg
> end
> foo()    =>"ing"
> とかいう馬鹿なこともできました。

  こういうのもできます。

    def complete(key, pat = Regexp.new('\A' + Regexp.quote(key).gsub(/\w+/, '\&\w*'), true))

-- 
--- 僕の前にBugはない。
--- 僕の後ろにBugはできる。
    中田 伸悦