有沒有辦法在ruby中有多個「初始化」方法? 例如:一個方法除了一個參數,而另一個除了三個?在紅寶石中有多個構造函數
喜歡的東西
class One
def initialize (a)
puts a
end
def initialize_1 (a,b)
puts a ,b
end
end
有沒有辦法在ruby中有多個「初始化」方法? 例如:一個方法除了一個參數,而另一個除了三個?在紅寶石中有多個構造函數
喜歡的東西
class One
def initialize (a)
puts a
end
def initialize_1 (a,b)
puts a ,b
end
end
initialize
其實並不是一個構造函數。你確實可以有兩個構造函數。
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
我同意ramblex。也相關 - http://stackoverflow.com/questions/9373104/why-does-ruby-not-support-method-overloading。如果您正在嘗試解決某個特定問題,則可以嘗試發佈更具體的問題,因爲可能有不同的解決方法。 – 2013-03-22 15:06:41
謝謝,我沒有具體的問題,我只是想弄清楚語言的來龍去脈。 我知道答案是否定的,但即時通訊仍不確定你是如何解決這個問題的。 – 13driver 2013-03-22 15:11:50
你可以用'konstructor' gem https://github.com/snovity/konstructor實現效果,例如你只需要聲明'konstructor:initialize_1' – snovity 2017-01-26 07:26:17