ごとけんです
In message "[ruby-list:18858] Re: initializer polymorphism?"
on 99/11/23, Takeyuki Watadani <watadani / tubulin.cb.m.u-tokyo.ac.jp> writes:
>ところで、やっぱり私があげた方法(*つきの仮引数を使って
>initialize内部で条件分岐する)にしてもGOTOさんの方法にしても
>ちょっと複雑になるというか可読性が落ちるというか、ムツカシク
>なりますよね? 皆様どうしているのでしょうか?
僕がよくやるのは、ユニバーサルでちょっと複雑な initialize を
用意して、そのあと、new を呼ぶユーティリティ的な生成用のメソッ
ドを複数作るといった感じです。
class Foo
def Foo.type1(*args); new(:TYPE1, *args); end
def Foo.type2(*args); new(:TYPE2, *args); end
....
def initialize(argtype, *args)
case argtype
when :TYPE1
...
when :TYPE2
...
else
...
end
end
end
>#もしかしてそんな程度でムツカシイなんていってちゃいけない?
>#それとも正しくRuby的なプログラミングをすればそもそも
>#initializerが複数欲しいなんて要求自体出てこない?
少なくとも僕はそんなことないと思います。割と自然な要求でしょう。
-- gotoken