ルビに複数の「初期化」メソッドを持たせる方法はありますか? 例:1つの引数を除いた1つのメソッド、3つを除く他のメソッド?ルビに複数のコンストラクタがある場合
class One
def initialize (a)
puts a
end
def initialize_1 (a,b)
puts a ,b
end
end
ルビに複数の「初期化」メソッドを持たせる方法はありますか? 例:1つの引数を除いた1つのメソッド、3つを除く他のメソッド?ルビに複数のコンストラクタがある場合
class One
def initialize (a)
puts a
end
def initialize_1 (a,b)
puts a ,b
end
end
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
これは何を購入するのですか?すべてがまだ元の新しいものを介してファンネルになり、初期化されます。 'def self.new_1(a、b);と言うかもしれません。新しい(a、b);エイリアシンググーの複雑さなしに「終了」することができる。一般的には、異なる名前を持つ別のコンストラクタを使用して、引数argを基本となる新しいものの一般形式に再パッケージ化します。 – dbenhur
私たちはもう一度会います、あなたは私に「自己」の仕組みについての素敵な説明をくれた人ですか? とにかく、これは1つ以上の引数を送るたびに「間違った引数の数」に悩まされます。 また、私に何が得られるのかわからない... – 13driver
私はramblexに同意します。関連性 - http://stackoverflow.com/questions/9373104/why-does-ruby-not-support-method-overloading。あなたが解決しようとしている特定の問題がある場合は、別の方法があるかもしれないので、より具体的な質問を投稿してみてください。 –
ありがとう、言語の内外を把握しようとすると、特に問題はありません。 答えは「いいえ」ですが、どうやって回避するかはまだ分かりません。 – 13driver
あなたは 'konstructor' gem https://github.com/snovity/konstructorで効果を得ることができます。 'konstructor:initialize_1'を宣言するだけです。 – snovity