出来ないらしい。
そもそも、メソッド(関数)の多重定義が出来ないから出来ないのもあたりまえ。
コンストラクタを多重定義するには、スタティック(静的)関数を定義すると出来る。
class Vector end
|
def self.NewUnit()
で静的なメソッドを定義し、その中でオブジェクトを作成し戻り値にし返します。
v2 = Vector.NewUnit()
のような形でオブジェクトの生成が出来るようになるわけです。
もし、メソッド名initialize()で多重定義関数のような振る舞いをさせるには、
Rubyでは引数にいろいろな型を渡すことができるので、initialize()内で
渡された引数の型を調べ内部で分岐するようにすれば出来ます。しかし、それではあまりにも美しくないし、バグの温床にもなりおすすめできません。
メソッドを分けて作ったほうがいいでしょう。
0 件のコメント:
コメントを投稿