From: "Nobuyoshi.Nakada" Date: 2000-11-16T17:54:03+09:00 Subject: [ruby-list:26026] Re: def foo(arg=@member) なかだです。 At Thu, 16 Nov 2000 17:43:45 +0900 "岡本" 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はできる。 中田 伸悦