From: "岡本" Date: 2000-11-16T19:32:47+09:00 Subject: [ruby-list:26036] Re: def foo(arg=@member) 岡本です。 > initialize は private なので呼べないとは思いますが。 勉強のためruby/gtkでテキストビューワを書いていたのですが、 一通りコードを書いてスクリプトを走らせてエラーメッセージを見て 初めてinitialize が private メソッドだと知りました(遅すぎ)。 小細工で def initialize2( arg = @memb ) initialize(arg) end とかやってみたのですが、かえって醜くなったのであえなくお蔵入りとなりました。 うーん、でも class Line def initialize(startx=... ,starty=... ,endx=... ,endy=... ) def initLength(startx=... ,starty=... ,len=... ,degree=... ) ........ initialize( ...... ) end def initPoint( startx= @startx, starty= @starty, endx= @endx, endy= @endy ) initialize(startx,starty,endx,endy) end end line = Line.new.initPoint(5,5,10,10) のようなやり方なら使い道は無きにしもあらずかな? <無駄なあがき ところで、なぜinitialize は private なのでしょうか。 他のオブジェクトから呼び出されてまずいとも思えませんが。 > こういうのもできます。 > > def complete(key, pat = Regexp.new('\A' + Regexp.quote(key).gsub(/\w+/, '\&\w*'), true)) ありがとうございます、読みにくいプログラムを書く技術が上達したような気がします。