2013-03-22 20 views
5

ルビに複数の「初期化」メソッドを持たせる方法はありますか? 例:1つの引数を除いた1つのメソッド、3つを除く他のメソッド?ルビに複数のコンストラクタがある場合

class One 
    def initialize (a) 
    puts a 
    end 
    def initialize_1 (a,b) 
    puts a ,b 
    end 
end 
+2

私はramblexに同意します。関連性 - http://stackoverflow.com/questions/9373104/why-does-ruby-not-support-method-overloading。あなたが解決しようとしている特定の問題がある場合は、別の方法があるかもしれないので、より具体的な質問を投稿してみてください。 –

+0

ありがとう、言語の内外を把握しようとすると、特に問題はありません。 答えは「いいえ」ですが、どうやって回避するかはまだ分かりません。 – 13driver

+0

あなたは 'konstructor' gem https://github.com/snovity/konstructorで効果を得ることができます。 'konstructor:initialize_1'を宣言するだけです。 – snovity

答えて

5

initializeよう

何かが実際にはコンストラクタではありません。あなたは確かに2つのコンストラクタを持つことができます。

class One 
    singletonclass.class_eval{alias old_new :new} 
    def self.new a 
    puts a 
    old_new 
    end 
    def self.new_1 a, b 
    puts a, b 
    old_new 
    end 
end 
+0

これは何を購入するのですか?すべてがまだ元の新しいものを介してファンネルになり、初期化されます。 'def self.new_1(a、b);と言うかもしれません。新しい(a、b);エイリアシンググーの複雑さなしに「終了」することができる。一般的には、異なる名前を持つ別のコンストラクタを使用して、引数argを基本となる新しいものの一般形式に再パッケージ化します。 – dbenhur

+0

私たちはもう一度会います、あなたは私に「自己」の仕組みについての素敵な説明をくれた人ですか? とにかく、これは1つ以上の引数を送るたびに「間違った引数の数」に悩まされます。 また、私に何が得られるのかわからない... – 13driver

関連する問題