我想創建一個工廠函數,它接受一個類類型並返回一個構造函數,以便我可以使用該構造函數稍後將創建該類的實例。Swift:創建一個將類類型作爲參數的工廠函數,並輸出該類的構造函數
想象一下,我有兩個類,蘋果和橙,這兩個類都是水果的子類。他們需要用unknownNumber
進行初始化,我將在稍後才知道。
class Apple: Fruit {
init(unknownNumber: Int) {
...
}
}
class Orange: Fruit {
init(unknownNumber: Int) {
...
}
}
我想創建一個工廠函數,它在一個類類型,這樣我可以在以後調用此函數並初始化水果的具體子類,與unknownNumber。
//concept:
func makeFruit(typeOfFruit) -> (Int) -> Fruit {
return { (unknownNumber: Int) -> Fruit in
return typeOfFruit(unknownNumber)
}
}
要創建orangeFactory的話,我可以這樣做:
let orangeFactory = makeFruit(Orange)
// then at a later time when I have the unknown number
let orangeInstance = orangeFactory(unknownNumber)
我知道簡單地使unknownNumber
懶惰變量的選擇,但在我的具體情況unknownNumber
不僅僅是一個數字,它涉及其他進程,所以我只想創建對象時,我有一切可用,以保持結構簡單。
在Swift中是這樣的可能嗎?我在網上一直在研究,似乎無法找到任何直接的答案。任何幫助將不勝感激!
這是一個很好的答案。該方法似乎很簡單,但也需要了解Swift的對象創建模型的許多小特性。我現在正在嘗試,如果它能正常工作,它會很快讓你知道! – gokeji