小林です。 GOTO Kentaro さん[ruby-list:18854] : 私にはrubyの奥義を垣間見たような気がします。 > > class A > class << self > alias __new__ new > end > > def A.new(*arg) > __new__(*arg).instance_eval{init1(*arg); self} > end > > def A.new2(*arg) > __new__(*arg).instance_eval{init2(*arg); self} > end > ちょっと、質問させてください. "class << self" はなぜ必要なのでしょうか? class とend をコメントにすると「undefined method `new' for class `A'」となるので必要であることはわかるのです が... > > >#*つきの仮引数を書いて、initializeの中で条件分岐して…って > >#のも考えたんですが。 > 条件分岐がいやなら class Test def initialize(*arg) yield arg end end obj=Test.new(1,2) { |a| print "number of args=",a.size,"\n"} # number of args=2 obj=Test.new(1,2,3) { |a| print "number of args=",a.size,"\n"} # number of args=3 とやってみたら、OKでした。 小林 茂雄 E-Mail: shigeo / tinyforest.gr.jp Home Page: http://www.tinyforest.gr.jp